Przeszkody w korzystaniu z Git Flow w Subversion

10

Mój zespół w pracy rozpoczyna nowy projekt, używając Subversion jako naszego VCS (możesz rozważyć ten zestaw w kamieniu do celów tego pytania). Wciąż jesteśmy w początkowej fazie projektu i staramy się uzgodnić model rozgałęzienia. Nasz poprzedni projekt był oparty na niestandardowym modelu wersji, który doprowadził do problemów podczas zarządzania poprawkami i łatkami do istniejących wydań.

Odkryłem, że różne modele rozgałęziające są raczej skomplikowane, ale jednym z modeli, który rozumiem dość wyraźnie, jest przepływ git . Jestem ciekawy, jak trudne / niepożądane byłoby zaimplementowanie tego wariantu w Subversion. Oczywiście istniałaby pewna różnica pod względem osób współpracujących w oddziałach. Gałęzie funkcji musiałyby być scentralizowane, a nie ograniczone do lokalnych repozytoriów, ale inne koncepcje modelu powinny być odtwarzalne w Subversion, tak jak rozumiem.

Jakie byłyby wady lub wyzwania tego podejścia. Słyszałem, że w SVN „scalanie jest kosztowne” w stosunku do Git. Ale nie jestem całkowicie pewien, co to oznacza w praktyce ani jak wpłynęłoby to na naszą zdolność do korzystania z przepływu git, takiego jak model rozgałęziający.

Jakie byłyby największe obawy związane z tym podejściem. Czy istnieje podobnie jasne podejście, które jest bardziej naturalne w Subversion?

Ben McCormick
źródło

Odpowiedzi:

12

Gitflow opiera się na najlepszych praktykach w zakresie wersjonowania i rozgałęziania kodu źródłowego. Bardzo dobrym artykułem na ten temat są Strategie rozgałęziania Advanced SCM

Punktem, który Vance podnosi w powiązanym artykule, jest to, że różne gałęzie mają różne role . Identyfikuje role:

  1. Mainline (wszystkie gałęzie stąd)
  2. Rozwój (tam, gdzie wykonywane są prace rozwojowe)
  3. Konserwacja (w przypadku wykonywania prac konserwacyjnych)
  4. Akumulacja (gromadzenie rzeczy w ramach przygotowań do wydania)
  5. Pakowanie (pakowanie kompilacji do wydania)

W gitflow są to:

  1. Rozwijać
  2. gałęzie funkcji
  3. Oddziały poprawek
  4. Zwolnij gałęzie
  5. Mistrz

Artykuł na temat rozgałęziania został napisany z myślą o Perforce. Perforce jest scentralizowanym VCS, podobnie jak svn. Wzorce rozgałęziania, które doskonale opisuje, odwzorowują na svn.

Kluczem do zrozumienia jest to, że nie chodzi o to, jak gitflow jest przenoszony do svn, ale o to, jak zastosować te same podstawowe koncepcje rozgałęziania i role rozgałęzień w różnych strukturach VCS.

Chciałbym gorąco polecam przeczytanie tego artykułu, nie mogę zrobić dużo punktów do niego. Sposób, w jaki są tam opisane, oparty jest na filozofii kompilacji linii głównej / głównej, do której łatwo będzie zmapować svn.


źródło
1
Powrót do pomysłów wiodących przy projektowaniu gitflow to sprytne ulepszenie oryginalnego pytania!
user40989,
@ user40989 Nie jestem pewien, czy Vincent Driessen (nvie) przeczytał ten artykuł, czy nie przedstawił tej koncepcji rozgałęziania, czy też odkrył ją na własną rękę. Tak czy inaczej, rozpoznanie roli niezbędnej do działania przepływu pracy poprzez kontrolę wersji ułatwia dostrzeżenie podobieństw między podejściami i najlepszymi praktykami.