Подтвердить что ты не робот

SVN: создайте diff для большого количества исправлений

У меня была частная ветка, в которой я делал тонну коммитов, затем я объединил ее в багажник и сделал несколько небольших настроек там.

Теперь поддерживающий туловище хочет отменить все мои изменения, если нам понадобится откат.

Как я могу создать это? Если вам нужны номера для ваших примеров, предположите, что

224446

была моей основной версией, где я слился с trunk,

224453 и 224462

были мои незначительные исправления, и у меня есть бесчисленные изменения, когда в моей частной ветке.

Решение (через Мартина)

svn diff -r 224452:224453 > ~/tmp/diff.1
svn diff -r 224462:224463 > ~/tmp/diff.2
svn up -r224446
patch < ~/tmp/diff.1 -p0
patch < ~/tmp/diff.2 -p0
svn diff -r 224445 > ~/tmp/changes.patch

Затем отправьте письмо ~/tmp/changes.patch нашему хранителю соединительной линии для сохранения.

4b9b3361

Ответ 1

Одна из возможных процедур заключается в следующем:

  • создать diff для 224453 и 224462 (например, svn diff -r 224452:224453 > diff1.patch).
  • проверьте 224446 (svn up -r224446)
  • применить diff (например, patch -p0 -i diff1.patch)
  • создайте отличие от 224445 (svn diff -r 224445 > diff2.patch)

Ответ 2

Один из вариантов - создать ветвь на 224446, затем слить в 224453 и 224462. Затем возьмите разницу между этим и 224445 на туловище. Это должно быть все изменения в одном, и вы можете создать его как файл исправления, если вам нужно:

# Branch from your initial checkin
svn cp svn://xyz/[email protected] svn://xyz/branches/foo

# Check it out
svn checkout svn://xyz/branches/foo tmp

# Merge in the two changes
svn merge -c 224453,224462 svn://xyz/trunk tmp

# Commit the changes
svn commit tmp -m "Extra commits 224453 and 224462"

# Diff the branch from mainline before original
svn diff svn://xyz/[email protected] svn://xyz/branches/foo

Это во многом то же самое, что и ответ Мартина, просто с разными способами применения изменений и получения различий. Обратите внимание, что, хотя в этом случае я внес изменения, вам действительно не нужно - вы могли бы просто сделать svn diff svn://xyz/[email protected] tmp вместо двух последних команд. Хорошая вещь о том, чтобы иметь его в репозитории, тогда любой может применить diff в обратном направлении, чтобы отбросить его обратно, если это потребуется.