Jednym z możliwych wyjaśnień jest to, że można zapomnieć o częściach zestawu zmian.
Jeśli zmiana powoduje, że łączysz pliki okładek spoza podkatalogu, który wypisałeś, zawsze istnieje możliwość, że zapomnisz scalić te pliki.
Na przykład, jeśli masz popełnić tak na pniu:
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Change some stuff
I wtedy mają kasę z podkatalog1 z oddziału „stable”, a następnie można scalić zmiany zestawu r5 tak:
$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U main.c
$ svn ci -m"Merged r5 from trunk"
Ale to będzie łączyć tylko połowę rewizji 5. co gorsza, jeśli wrócić i spojrzeć na logu, to teraz pokazać to:
$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Merged via: r6
Change some stuff
Wygląda na to, że połączyłeś całe zatwierdzenie, gdy w rzeczywistości scaliłeś tylko niektóre z nich. Oczywiście r6 pokazuje, że tylko 1 plik został zmieniony w stabilnym oddziale.
------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
M /branches/stable/subdir2
M /branches/stable/subdir2/main.c
Merge revision 5 from trunk
Ktoś musi pamiętać, lub informacja, że tylko część zestawu zmian, ale połączone, a reszta musi robić. Brak łączenia podkatalogów pozwala uniknąć tego problemu.
Są chwile, kiedy naprawdę nie chcesz scalić wszystkich poprzednich zatwierdzeń, a powyższy scenariusz jest dokładnie tym, co zamierzałeś zrobić. W takim przypadku prawdopodobnie najlepiej jest dodać dobrą wiadomość zatwierdzającą opisującą twoje intencje.
Podoba mi się tytuł :) – Dunaril