W obecnym miejscu, w którym pracuję, system kontroli wersji jest jednym z najbardziej zaawansowanych i dojrzałych. To jest jak to robimy.
Mamy coś nazywanego "główną" gałęzią, która jest bazą kodu, która będzie w produkcji. Uwaga, podstawa kodu w jednej, ogromnej, gigantycznej strukturze. Powiedz, że jeśli nadejdzie nowy projekt, będziemy musieli ustalić jego zakres i zarezerwować tydzień wydania. Teraz musimy zacząć nad tym pracować. Więc wycinamy gałąź z głównej gałęzi nazywanej gałęzią cech. Zespół lub grupa deweloperów nadal pracuje w tej konkretnej branży. Zauważ, że będzie wiele cięć w gałęziach jednocześnie z głównego oddziału.
Teraz, gdy rozwój już się skończył, aby połączyć kod z powrotem do głównego. Nie zrobimy tego bezpośrednio, ponieważ może spowodować spustoszenie z powodu oczywistych problemów krytycznych. Mamy więc jeszcze jedną gałąź wyciętą z głównej pre-release. Łączymy cały nasz kod z bazą wydań. I wykonaj kompilację na pełnej bazie kodu. Kompilacja powinna przejść. Kiedy to zrobi, wyodrębniamy zielony znacznik czasu (ostatnia aktualizacja). Po otrzymaniu zielonego znacznika czasu kod zostanie scalony z gałęzi przed wydaniem do głównej, a wydanie zostanie sfinalizowane.
Po wprowadzeniu kodu do produkcji i powiedzmy, że mamy do czynienia z kilkoma błędami, wycinamy gałąź z głównej gałęzi nazwanej jako gałąź naprawiająca błędy. Wykonaj wszystkie zmiany. I połączenie go z powrotem; zawsze postępuje zgodnie z procesem pre-release/green timestamp. To nieuniknione.
Ponowna baza. Ok, więc początkowo powiedziałem, że zarezerwowalibyśmy, gdy nasz oddział funkcji zostanie ukończony. W tym czasie na głównej stronie pojawi się wiele aktualizacji kodu. Jest więc bardzo potrzebne, abyś aktualizował swoją bieżącą gałąź funkcji, aby była zsynchronizowana z główną. W tym celu jest wykonywany proces zwany jako rebase. To tak, jak pobranie najnowszego kodu z głównego, tak, że nie pracujesz w gałęzi, która jest tak przestarzała.W moich bieżących organizacjach baza będzie uruchamiana co 2-3 tygodnie, chociaż zasady zalecają 1 tydzień.
Bardziej interesujące funkcje: Załóżmy, że obecnie pracuję nad tak zwanym działem funkcji i chcę uzyskać kod od jednego z pozostałych zespołów, które również pracują we własnej gałęzi funkcji (ten scenariusz, choć zdarza się często, rzadko się zdarza) . W tym celu zmienimy naszą konfigurację (ClearCase jest naszym systemem kontroli wersji), aby wskazywać te pliki wymagane z innego projektu. Można użyć parametru NAJNOWSZY lub można określić TIMESTAMP w celu wyodrębnienia plików pochodzących z innej gałęzi operacji.
Po upływie pewnego czasu od rozpoczęcia projektu odcięta gałąź funkcji nie jest potrzebna. Można go usunąć z systemu, powiedzmy po latach, że przestrzeń powinna być ograniczeniem.
Tak, masz rację - nie nienawidzisz tych naprawdę odkrywczych błędów dla początkujących! – PaulHurleyuk
to powinno być wiki społeczności, ponieważ nie ma właściwego odpowiedzi. –
Zobacz również http://stackoverflow.com/questions/1049917/workflow-description-for-git-usage-for-in-house-velopment/1050628#1050628 – VonC