2012-10-17 13 views
5

Testujemy używając git jako systemu repozytoryjnego zamiast naszego normalnego svn. Istnieje jedno repozytorium svn, którego zawsze potrzebujemy. W svn łączymy to repozytorium z svn propset jako svn: externals. Gwarantuje to, że istnieje naprawdę tylko jedna globalna kopia tego szczególnego, mocno używanego repozytorium.Próba ustawienia repozytorium SVN w Git

Teraz, gdy mamy repozytoria git, chciałbym połączyć repozytorium SVN w taki sam sposób, jak można z svn: externals. W pewnym stopniu mi się to udało. Jestem nowy w git, proszę wybaczyć każdą ignorancję.

W czystej git repo (co klonować poprzez git clone [email protected]:mygitrepo) użyłem:

git svn clone svn+ssh://[email protected]/path/to/mysvnrepo mysvnrepo 

dostać kopię innego repozytorium SVN. Działa to świetnie, mogę uzyskać nowe wersje repozytorium SVN poprzez git svn rebase w katalogu mysvnrepo i zatwierdzać zmiany przez git svn dcommit.

Aby połączyć to do głównego repozytorium git użyłem:

git add mysvnrepo 
git commit mysvnrepo 
git push 

Problem Mam to gdybym teraz sklonować repo git gdzieś indziej (znów z git clone [email protected]:mygitrepo), podczas gdy uzyskać katalogu mysvnrepo z wszystkie pliki, nie mogę wchodzić w interakcje z repozytorium SVN. Pojawia się błąd: "Nie można ustalić informacji SVN w górę strumienia z historii drzewa roboczego" po Git Svn rebase. Prawdopodobnie jest powiązany, nie ma katalogu .git w katalogu mysvnrepo, kiedy sklonuję go gdzie indziej (tutaj jest informacja o svn przechowywana w oryginalnym repozytorium).

Przeszukałem ten problem nieco, ale wszystkie odniesienia do niego wydają się mieć problemy z uruchomieniem repozytorium SVN, podczas gdy moim problemem jest sprawdzenie, czy działa on dla innego użytkownika.

Być może mój problem polega na tym, jak skutecznie dodać/zatwierdzić/przekazać repozytorium svn do repozytorium git? tj. jest: git add mysvnrepo; git commit mysvnrepot; git push; poprawny sposób to zrobić?

Edycja: ulepszone, aby dać więcej kontekstu

+0

Jak klonować repozytorium? Używając 'git clone' lub sprawdzając go z SVN lub ...? – siegi

+0

masz na myśli repozytorium git, w którym pracuję? zarówno dla oryginalnego repozytorium git, jak i dla innego użytkownika, używam 'git clone [email protected]: mygitrepo' –

Odpowiedz

2

jak to wygląda starasz się zrobić to m.in. jednego repozytorium git wewnątrz innego, jak przy svn:externals. Tak się składa, że ​​dołączone repozytorium zostało utworzone pod numerem git svn; to nie będzie miało żadnego wpływu na to, w jaki sposób umieścisz to repozytorium w innym.

Musisz utworzyć repozytorium git, które chcesz umieścić w innym publicznie dostępnym miejscu. Możesz go następnie dołączyć, używając albo git submodule lub git subtree. Żadna z nich nie działa dokładnie tak jak svn:externals; git subtree może być jednak bardziej przyjazny dla początkujących dla innych użytkowników repozytorium git.

W zależności od używanego języka i oprogramowania, można również rozważyć utworzenie osobnego repozytorium git dla często używanego repozytorium i zbudowanie go jako własnej samodzielnej biblioteki, pliku jar lub czegoś co .

Powyższe działa tylko wtedy, gdy planujesz przełączyć się całkowicie na git. Jeśli jakiś zespół będzie pracował przez jakiś czas w SVN, git substree lub git submodule nie będzie działać.

Zamiast tego spójrz na this question dla symulacji svn: externals z git svn.

Aby ustawić wszystkich do użycia git, wykonaj ostatni przykład w "Podstawowe przykłady" na stronie podręcznika git svn. Wszyscy będą mogli git clone, a następnie uruchomić kilka poleceń lokalnie, zamiast wykonywać pełną git svn clone.

+0

problem polega na tym, że chcę, aby ludzie mogli powrócić do repozytorium svn z repozytorium git za pomocą' git svn dcommit'. Utworzenie globalnego repozytorium git dla tego samego celu działałoby, ale byłoby oddzielne od repozytorium svn; jest to niepożądane. Jednym z rozwiązań jest sprawienie, by każda osoba ręcznie git svn sklonowała repozytorium svn, a następnie powinna być w stanie zatwierdzić (tak jak ja, kiedy to sklonuję). –

+0

Zaktualizowałem moją odpowiedź, aby podać kilka szczegółów na temat tego, co możesz zrobić w tej konfiguracji . Powolna/częściowa migracja z SVN do git z svn: externals jest nieco niezręczna. Mam nadzieję, że nie odstraszy ciebie ani twojego zespołu; git naprawdę jest cudowny, kiedy już do tego przywykłeś. – jbowes

Powiązane problemy