Mam repozytorium git, które śledzi repozytorium svn. Sklonowałem go za pomocą --stdlayout
.
Utworzyłem nowy oddział lokalny za pośrednictwem git checkout -b foobar
Teraz chcę, aby ta gałąź znalazła się w …/branches/foobar
repozytorium svn.
Jak mam to zrobić?
(wycięłam dużo tekstu dochodzeniowego. przejrzyj historię pytań, jeśli cię to obchodzi)
Odpowiedzi:
Wiem, że odpowiedź na to pytanie była już dawno temu, ale po przeczytaniu mogę pomóc w dodaniu przykładów konkretnej komendy gałęzi git svn i powiązać ją z typowym przepływem pracy.
Tak jak odpowiedział Kch, użyj
git svn branch
. Oto pełny przykład (zwróć uwagę na-n
test na sucho):Jeśli wszystko pójdzie dobrze, serwer odpowiada następującą odpowiedzią:
I bez
-n
przełącznika serwer prawdopodobnie dodaje coś takiego:Najlepsze jest to, że teraz możesz utworzyć oddział lokalny w oparciu o oddział zdalny w następujący sposób:
Co oznacza: „sprawdź i utwórz lokalną gałąź o nazwie
auth_bug
i spraw, aby śledziła gałąź zdalną (ostatni parametr)auth_bug
Test że lokalny oddział działa w tej branży za pomocą zdalnego
dcommit
z--dry-run
(-n
):A serwer SVN powinien odpowiedzieć nową nazwą oddziału:
źródło
git co
zgit checkout
tak, że przykład może pracować dla kogokolwiekgit-svn branch
Komenda ma trudną rolę - musisz być online, aby w ten sposób utworzyć nowy oddział. W trybie offline możesz wykonać następujące czynności: 1.git checkout -b foobar
2. hack-hack-hack 3git commit -m "Done foobar"
.. A kiedy online, wciśnij tę zmianę, wykonując 1.git svn branch foobar
2.git branch --set-upstream foobar remotes/foobar
3git svn dcommit
..git checkout -b foobar-new remotes/foobar
. 3.git checkout foobar
4.git rebase foobar-new
5. Aby przetestować, aby upewnić się, że gałąź zatwierdza teraz gałąź svn.git svn dcommit --dry-run
6. W końcu faktyczniegit svn dcommit
git branch -D foobar-new
od wersji git 1.6.1
git svn branch
jest dostępny.Z git docs:
Poprzednie wersje git nie umożliwiają tworzenia gałęzi svn.
źródło
@kch Właśnie (7 grudnia 2008 r.) skompilowałem tag git v1.6.1-rc1 i zawiera on komendę gałęzi git svn oraz odpowiednią dokumentację. Tak więc wydanie git w wersji 1.6.1 powinno (mam nadzieję) zawierać to polecenie.
źródło