Czy mogę zaktualizować gałąź z pnia bez wykonywania połączenia?
Prawdopodobnie tego nie przemyślałem, a może po prostu nie jestem świadomy istniejącej już opcji w Subversion (na pewno nie jestem ekspertem).
Zastanawiam się tylko, czy stworzyłem gałąź, aby rozpocząć pracę nad jakąś nową funkcją, czy istnieje łatwiejszy sposób, aby utrzymać gałąź na bieżąco z najnowszymi wersjami trunk bez konieczności przechodzenia przez wszystkie problemy związane ze scalaniem różnych wersji. Chciałbym móc po prostu zaktualizować i uzyskać wszystkie poprawki z pnia (i gałąź, oczywiście), podczas gdy moje zmiany wpływają tylko na gałąź. Czy to możliwe? Czy to, o co Proszę, ma sens?
Przypuszczam, że tak naprawdę nie różni się to od scalania szeregu poprawek; po prostu używam AnkhSVN, który wykonuje wszystkie te sprawdzania najlepszych praktyk przed zezwoleniem na scalanie, i czasami wydaje mi się, że jest to o wiele bardziej skomplikowane niż powinno być. Chodzi o to, że chcę, aby mój oddział był na bieżąco z każdym commity innych deweloperów mogą być wykonane do trunk tak, że kiedy w końcu zrobić połączyć moją gałąź do trunk, wszystko idzie (jak) płynnie (jak to możliwe).
5 answers
Dbanie o aktualność gałęzi z najnowszymi kontrolami bagażnika nazywa się połączeniem.
Wiem, że scalanie może być czasem Królewskim koszmarem, ale właśnie tym jest scalanie.
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
2010-03-03 15:22:48
TL;DR; No musisz się połączyć, oto kilka instrukcji
Nie jest tak źle, jak myślisz. Będę zarys kroków z linii poleceń, które używam. Będę używać vimidiff do zarządzania konfliktami możesz użyć Meld lub innego narzędzia diff, które lubisz. Polecenia są poprzedzone znakiem hash ' # '<in branch first time from copy>
# svn log --stop-on-copy | tail
<read the revision that was the copy instruction in this case r229>
# cd ../../trunk
# svn up
<I make note of the latest rivision which is r334>
<now I go back to the branch>
# cd ../branches/branch
# svn merge -r229:334 svn://url.to.svn.server/project/trunk
<a whole bunch of stuff happens>
< now I check for conflicts >
# svn status | grep ^C
<which outputs something like>
C public/tools/Diagnostic.class.php
C public/domain/Report_Setup_Parameter.class.php
C public/modules/mReports.module.php
<I now revert all these and manually merge them>
# svn revert public/tools/Diagnostic.class.php
...
<revert done now manuall doinng the merge
# vimdiff public/tools/Diagnostic.class.php ../../trunk/public/tools/Diagnostic.class.php
...
<now all the changes are done>
# svn commit -m "Merging trunk into branch 'branch' r:229:334"
commited revision 335
Zrobione, jeśli zrobisz to reguarly to nie ma wielu zmian. Po pierwszym scaleniu musisz użyć wersji # ostatniego scalenia. Dlatego jakiś czas w w przyszłości komenda będzie szukać w dzienniku svn, aby znaleźć, kiedy ostatnia zmiana scalenia była, w tym przypadku 335. Polecenie merge wyglądałoby jak thuse
# svn merge -r335:370 svn://url.to.svn.server/project/trunk
Wszystkie pozostałe kroki są takie same.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
2010-03-03 15:36:05
Chodzi o to, że chcę zachować moją branch up-to-date with any commits inni deweloperzy mogą robić do bagażnika tak, że kiedy w końcu zrobię / align = "left" / , wszystko idzie (jak) gładko (jak możliwe).
Aby to osiągnąć, musisz wykonać fugowanie range-revision z trunka. W rzeczywistości, to jest dobra praktyka, aby zrobić tego rodzaju połączenia do gałęzi od czasu do czasu, aby być na bieżąco z tym, co dzieje się w bagażniku.
Nie wiem o narzędzia dla AnkhSVN, ale "czysty" SVN ma bardzo dobre narzędzia, które sprawiają, że operacje scalania są dość proste. TortoiseSVN jest świetnym narzędziem dla Windows i jeśli lubisz Netbeans jest bardzo ładne wsparcie graficzne dla merge zbyt.
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
2010-03-03 15:21:22
Nie znam AnkhSVN, ale to, co opisujesz, jest dokładnie tym, do czego służy svn merge
. Więc odpowiedź na twoje pytanie brzmi nie.
--reintegrate
, aby sprawdzić, czy to ułatwi Ci życie.
Zobacz te posty na blogu:
Subversion merge reintegrate
Subversion 1.5 merge-tracking w skrócie
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
2010-03-03 15:21:16
Jeśli używasz PHPStorm możesz spróbować użyć interfejsu GUI https://www.jetbrains.com/help/idea/2016.1/integrating-changes-to-from-feature-branches.html
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
2016-05-31 13:57:27