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).

Author: Michael Hackner, 2010-03-03

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.

 32
Author: Jack Marchetti,
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.
 23
Author: flaxeater,
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.

 3
Author: pajton,
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.

Możesz jednak skorzystać z opcji --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

 0
Author: Michael Hackner,
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

 0
Author: max4ever,
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