SVN: Tworzenie różnic dla wielu wersji

Miałem prywatną gałąź, do której zrobiłem mnóstwo commitów, potem połączyłem ją z trunkiem i zrobiłem tam kilka drobnych poprawek.

Teraz opiekun bagażnika chce diff z wszystkich moich zmian okrzyknąć, że potrzebujemy wycofania.

Jak mogę to stworzyć? Jeśli potrzebujesz liczb do swoich przykładów, Załóżmy, że

224446

Była moja główna wersja, gdzie połączyłem się z bagażnikiem,

224453 i 224462

Były moje drobne poprawki, i mam niezliczone zmiany, gdy w moim prywatnym branch.

Rozwiązanie (via Martin)

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

Następnie mail ~ / tmp / changes.zabezpiecz bagażnik.

Author: Paul Tarjan, 2009-10-13

2 answers

Jedną z możliwych procedur byłoby zrobienie tego:

  1. Tworzenie różnic dla 224453 i 224462 (np. przez svn diff -r 224452:224453 > diff1.patch).
  2. Zobacz 224446 (svn up -r224446)
  3. zastosuj diffs (np. patch -p0 -i diff1.patch)
  4. stwórz diff tego przeciw 224445 (svn diff -r 224445 > diff2.patch)
 31
Author: Martin v. Löwis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-10 10:18:30

Jedną z opcji byłoby utworzenie gałęzi na 224446, a następnie połączenie w 224453 i 224462. Następnie weź różnicę między tym a 224445 na bagażniku. To powinny być wszystkie zmiany w jednym, i możesz utworzyć go jako plik łatki, jeśli potrzebujesz:

# Branch from your initial checkin
svn cp svn://xyz/trunk@224446 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/trunk@224445 svn://xyz/branches/foo

Jest to w dużej mierze to samo, co odpowiedź Martina, tylko z różnymi sposobami stosowania zmian i uzyskiwania różnic. Zauważ, że chociaż w tym przypadku dokonałem zmian, tak naprawdę nie musisz - możesz po prostu zrobić svn diff svn://xyz/trunk@224445 tmp zamiast ostatnie dwa polecenia. Dobrą rzeczą w posiadaniu go w repozytorium jest to, że każdy może zastosować diff w odwrotnej kolejności, aby go cofnąć, jeśli jest to wymagane.

 7
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-13 06:50:35