Jaki jest najlepszy sposób klonowania gałęzi po klonowaniu tylko pnia w git-svn?
Biorąc pod uwagę duże repozytorium Subversion z wieloma gałęziami, chcę zacząć używaćgit-svn
przez klonowanietrunk
najpierw i dodając konkretne gałęzie później. Widziałem co najmniej trzy sposoby, aby to zrobić, ale czy któreś z nich są „oficjalne” lub czy jest najlepszy sposób?
Załóż następujący układ:
https://svn-repo.com/svn/company
+--core
| +--trunk
| +--branches
| | +--fastboot
| | +--playground
| +-tags
+--mobile
+--trunk
+--branches
+--tags
Tak więc, aby sklonować tylko pień (bez gałęzi), wersja 12345 projektucore
:
$ git svn clone --username=svnuser -r 12345 -Ttrunk https://svn-repo.com/svn/company/core
To sklonuje projektcore
do katalogu o tej samej nazwie i działającegogit svn rebase
pociągnie wszystkie zmiany (po wersji 12345). W tym momencie.git/config
powinien mieć w sobie coś takiego:
[svn-remote "svn"]
url = https://svn-repo.com/svn/company
fetch = core/trunk:refs/remotes/trunk
Jak na razie dobrze. Powiedzmy, że chcę dodaćplayground
Oddział. To tutaj robi się trochę mgliste.
opcja 1: Zaktualizuj istniejący pilot.git/config
dodając tam gałąź:
[svn-remote "svn"]
url = https://svn-repo.com/svn/company
fetch = core/trunk:refs/remotes/trunk
branches = core/branches/{playground}:refs/remotes/branches/*
W tym momencie udało mi się:
Pociągnij w wersji 23456 oddziałuplayground
$ git svn fetch -r 23456
Utwórz lokalny oddział i przełącz się na niego
$ git checkout -b playground branches/playground
Wyciągnij najnowsze zmiany:
$ git svn rebase
Opcja 2: Dodaj nowy pilot w.git/config
(oprócz istniejącego):
[svn-remote "playground"]
url = https://svn-repo.com/svn/company
fetch = core/branches/playground:refs/remotes/playground
Stąd kroki są podobne do tych zopcja 1:
$ git svn fetch playground -r 23456
$ git checkout -b playground remotes/playground
$ git svn rebase
Opcja 3: Widziałem też, jak ktoś dodał nowe pobranie do istniejącego pilota:
[svn-remote "svn"]
url = https://svn-repo.com/svn/company
fetch = core/trunk:refs/remotes/trunk
fetch = core/branches/playground:refs/remotes/branches/playground
Nie jestem do końca pewien, czy to jest poprawne, czy nawet zadziała. Nie mogę znaleźć, gdzie to widziałem.
Obecnie trzymam sięopcja 1, ale naprawdę chciałbym wiedzieć najbardziej odpowiedni sposób, aby to zrobić.