2008-10-10 38 views
60

Słowo ostrzeżenia: Ogólnie rzecz biorąc, jestem n00b do git. Mój zespół używa oddziałów funkcji w svn i chciałbym użyć git-svn do śledzenia mojej pracy nad konkretnym działem funkcji. Byłem (w przybliżeniu) po Andy Delcambre's post, aby skonfigurować moje lokalne repozytorium git, ale te instrukcje zdały się prowadzić git, aby wybrać gałąź svn, która ostatnio zmieniła się jako zdalne repozytorium; Problem polega na tym, że nie interesuje mnie branża. Jak mogę kontrolować, który oddział używa git-svn? A może zbliżam się do tego zupełnie nie tak?Jak uczynić git-svn użyć konkretnej gałęzi svn jako zdalnego repozytorium?

UPDATE: Zrobiłam używać -T, -b i -t opcje (w moim przypadku, ponieważ svn repo ma wiele projektów, ale chcę git repo zawierać tylko projekt pracuję nad).

Odpowiedz

60

Muchas gracias na blogu Barta dla tego przydatnego reference for svn branches in git. Podobno wszystko, co było potrzebne, aby określić zdalną gałąź podczas tworzenia git oddziału, np

git checkout -b git-topic-branch-foo foo 

gdzie foo jest nazwą zdalnej gałęzi.

+8

Jeśli już utworzyłeś gałąź git, możesz również użyć 'git rebase', aby ponownie umieścić ją w gałęzi svn. – rampion

+0

http://www.jukie.net/~bart/blog/svn-branches-in-git zwraca błąd 500. Czy blog się przeniósł, czy coś? – Henry

+0

Dziękuję, wydaje się, że to jedyny sposób, aby dostać git do kasy w oddziale w stanie nieodległym. –

1

Używam git-svn, ale nie korzystałem z funkcji, które współdziałają z gałęziami SVN. Powiedziawszy to, zauważam, że samouczek, który obserwowałeś, nie używał opcji -T, -b, -t do git svn init. Opcje te informują git-svn o nazwach podkatalogów trunk/branches/tags, które mogą być ważne w twojej sytuacji.

+0

Dzięki, Greg. Niestety dla mnie taka jest różnica między moją instalacją a tą na blogu. –

30

Możesz również rzucić okiem na to: git-svn is a gateway drug - robby on rails.

Kiedyś coś takiego, kiedy potrzebne, aby upewnić się, że mój lokalny oddział wskazywał na prawidłową zdalnego svn oddziału:

git branch -r 

aby uzyskać nazwę zdalnego oddziału Chcę być śledzenia. Następnie należy jednoznacznie zmienić gałąź lokalną, aby wskazywała na inną gałąź zdalną.

+2

+1 dla resetowania git - trudno - po prostu to, co miałem :) –

+1

jest to ręczny proces wymuszania na lokalnej gałęzi aktualizacji do bieżącego stanu zdalnej gałęzi svn. pytanie, które przeczytałem, ma więcej wspólnego z funkcjami zdalnego śledzenia gita i konfigurowaniem gita, aby automatycznie śledzić określoną gałąź w SVN. –

9

Najpierw musiałem uruchomić "git svn fetch", ponieważ gałąź, z którą chciałem się połączyć, została utworzona po moim kliencie git.

+0

dziękuję, za tę wskazówkę i jako notatkę, jeśli znajdziesz pilotów w .git/svn/refs/pilotów, a jeśli jest nowy, po uruchomieniu "git svn fetch", powinien pojawić się tam . –

+0

ostrożnie podchodź do .git, rzeczy tam mogą się zmienić. W szczególności, refing może być czasami pakowany w zapakowane opakowania, zwłaszcza jeśli nie zmieniają się zbytnio i nie będą się uwalniać, nawet jeśli są obecne. git show-ref robi to lepiej i (być może) gałąź git -r jeszcze lepiej – ComputerDruid

+1

jeśli uruchomisz 'get checkout -b git-topic-nazwa-nazwy-nazwy-zdalnej-gałęzi' i otrzymasz 'fatal: git checkout: aktualizowanie ścieżek jest niekompatybilny z przełączaniem gałęzi. " Następnie uruchom' git branch -r', a jeśli nie widzisz gałęzi, to jest potrzebne 'git svn fetch'. ('git svn rebase' nie będzie ciągnąć nowej gałęzi, ale' git svn fetch' będzie) –