2011-10-03 15 views
5

nowy użytkownik git tutaj. Chcę użyć git, ale jestem w środowisku SVN. Z niektórych książek, które przeczytałem i prostych eksperymentów, natknąłem się na pewne kłopotliwe pułapki i mam nadzieję, że otrzymam wyjaśnienie, jak zacząć bez kolegów, którzy chcą mnie zabić.git svn i praca z oddziałami prywatnymi?

chcę mój workflow być:

  • mistrzem git oddział, który pozostaje w zgodzie z tułowia SVN jest.

  • lokalne oddziały git że dołożę wszelkich funkcji i pracy w błędzie.

  • Chcę często wprowadzają gałęzie fabularnych na bieżąco z panem.

  • Kiedy jestem gotowy, chcę połączyć gałąź funkcji z master i zatwierdzić ją z powrotem do svn.

Czy to typowy przepływ pracy?

Początkowo używałem git merge, aby scalić mój główny oddział i gałęzie funkcji. Doprowadziło to do różnego rodzaju konfliktów i problemów. Później czytałem, aby nie używać git scalania alltogether i trzymać się z git rebase. Czy poniższe polecenia git będą poprawne?

  • git svn rebase (ciągnąć w dół najnowszych zmian w Master)
  • git checkout -b myAwesomeFeature (aby gałąź funkcji do pracy)
  • ... popracować, zrobić zobowiązuje się do mojego funkcja oddział
  • < < < upływu czasu >>>
  • git checkout głównego
  • git svn rebase (ciągnąć w dół nowych rzeczy)
  • git checkout myAwesomeFeature
  • git rebase Mastera (aby dostać rzeczy SVN bagażnika do mojego oddziału fabularnego)
  • < < < READY TO PUSH Funkcja Moja ODDZIAŁ >>>
  • głównego git checkout
  • git rebase myAwesomeFeature (do fast forward mistrzów udać się dostać moje rzeczy w funkcji)
  • git svn dcommit (w końcu opublikować)

Wszelkie porady lub sugestie aby docenić początkującego użytkownika git na żywo w świecie svn. Dzięki

Odpowiedz

2

Twój przepływ pracy jest mniej więcej taki sam jak ja. Wystarczająco dobrze jest, jeśli jesteś zobowiązany tylko do pnia svn.Staje się to skomplikowane, gdy przenosisz się do wielu gałęzi svn, gdzie rebase nie tylko łączy zawartość, ale także zmienia gałąź wskazywaną na svn, w takim przypadku możesz tylko git cherry-pick, gdy potrzebujesz zatwierdzenia do jednej gałęzi git targetowania svn w innej, jak omówiono tutaj: Overcome git svn caveats

warto też zrozumienie, że niezdolność do obsługi sVN historię nieliniową i że git scalania nie może być używany z nim: git svn workflow - feature branches and merge

+1

to faktycznie możliwe jest użycie 'git merge' z 'git svn'. 'dcommit' z radością pchnie commit z wieloma rodzicami do subversion, chociaż subversion zobaczy go tylko jako zwykłe zatwierdzenie ze wszystkimi zmianami z gałęzi. Jest to jedyny sposób, w którym faktycznie zaczniesz współpracować z git (np. Próbując stopniowo przełączać się). –