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 нашему хранителю соединительной линии для сохранения.
Ответы
Ответ 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 в обратном направлении, чтобы отбросить его обратно, если это потребуется.