Najlepsze praktyki SVN - praca w zespole


98

Zaczynam od SVN. Znam podstawowe polecenia i rozumiem podstawowe zasady. Zastanawiałem się, czy ktoś ma jakieś wskazówki lub najlepsze praktyki dotyczące pracy z Subversion w środowisku zespołowym.

Widzę korzyści z dodawania rozsądnie pełnych wiadomości podczas zatwierdzania kodu, ale czy są inne rzeczy, o których powinienem pamiętać?

Dzięki za wszystkie świetne odpowiedzi - bardzo pomogły.

Odpowiedzi:


76

Zachęcaj do częstych zatwierdzeń. Członkowie zespołu, którzy nie znają kontroli wersji, mogą czuć, że muszą trzymać kod poza repozytorium, dopóki „nie zadziała prawidłowo”. Naucz wszystkich angażować się wcześnie i często jak najszybciej znajdować problemy. Zamiast trzymać kod, dopóki to nie zadziała, zaproponuj swoim kolegom z zespołu tworzenie gałęzi dla funkcji, która może zepsuć trunk. To prowadzi do ...

Ustal praktykę rozgałęziania i tagowania. Oprócz gałęzi dla funkcji, zachęcaj swoich kolegów z drużyny do używania gałęzi do naprawiania dużych błędów. Oznaczaj główne poprawki błędów na początku i na końcu pracy. Utrzymuj tagi (i prawdopodobnie gałęzie) dla wersji produkcyjnych / QA.

Ustanów politykę dla linii głównej i trzymaj się jej. Jednym z przykładów może być: „trunk musi zawsze budować bez błędów”. lub „łącze trunk musi zawsze przejść wszystkie testy jednostkowe”. Wszelkie prace, które nie mogą jeszcze spełniać standardów magistrali, muszą być wykonywane w oddziale.


1
rozgałęzianie i łączenie jest czymś w rodzaju bólu w SVN. Inne systemy VCS radzą sobie z tym znacznie lepiej, ale nigdy nie zalecałbym procesu obejmującego wiele gałęzi dla SVN.
Branan

7
@Branan WRONG. dzieje się tak, ponieważ nie wiesz, jak prawidłowo używać kontroli źródła. W przypadku rozgałęzienia oczekuje się, że będziesz dobrym programistą wykonującym swoją pracę i AKTUALIZUJĄC twoją gałąź z linii głównej i scalając najnowsze zmiany z linii głównej do oddziału CODZIENNIE lub kilka razy dziennie (do wyboru), aby ostatecznie nie połączcie piekło, które się nagromadziło. Mam co najmniej 4-5 oddziałów działających cały czas lokalnie na moim komputerze i NIGDY nie jest to koszmar, o którym ludzie mówią, ponieważ robię to dobrze ... często aktualizuję, aby mieć zmiany, które ludzie sprawdzają w bagażniku i praca i dodanie kodu w odniesieniu do
PositiveGuy,

66

Nie zatwierdzaj zmian formatowania wraz ze zmianami kodu

Jeśli chcesz zmienić strukturę białych znaków ( Control+ K+ D) w gigantycznym pliku , w porządku. Zatwierdź zmianę formatowania oddzielnie od rzeczywistej zmiany logicznej. To samo dotyczy przenoszenia funkcji w plikach. Zatwierdź przeniesienie niezależnie od faktycznej edycji.


2
więc edytuję plik przez cały dzień, a teraz pora go zatwierdzić, jak rozdzielić formatowanie?
Dustin Getz,

23
Jeśli zamierzasz dokonać zmian formatowania w istniejącym kodzie, zrób to najpierw, zatwierdź, a następnie dodaj nowy kod / edytuj kod. Lub najpierw dodaj / edytuj, zatwierdź, a następnie zmień formatowanie. W ten sposób różnica przy dodawaniu / edytowaniu ma sens i nie mówi po prostu „teraz wszystko jest inne!”
lc.

1
+1. Nieistotne zmiany zwiększają wysiłek, jaki jest potrzebny do przeglądu odpowiednich zmian. Utrudnia również scalanie / zmiany portów (powiedzmy, inna gałąź).
Ates Goral

2
Chociaż jest to dobra praktyka do naśladowania, nie sądzę, aby ktokolwiek był w stanie to egzekwować. Jason ma rację, dobry programista zda sobie sprawę, że może ignorować białe znaki za pomocą dobrego narzędzia do porównywania (jedno jest wbudowane w SVN żółwia), aby odfiltrować szum.
Ken Sykora

1
Można to wymusić poprzez przegląd kodu i edukację członków zespołu. Nie sądzę, aby oddzielenie zmian logicznych od zmian w kodzie powinno spoczywać na recenzencie. Powinno to być obowiązkiem osoby wdrażającej.
Marquez

43

Jedną z kluczowych koncepcji, której zawsze się trzymam, jest wspólne wprowadzanie zmian w kodzie . Wynika z tego, że nie zatwierdzaj niepowiązanych zmian kodu w tym samym zatwierdzeniu . Oznacza to, że nie naprawiaj 2 błędów w jednym zatwierdzeniu (chyba że jest to ta sama poprawka) i nie wykonuj połowy poprawki błędu w każdym z 2 zatwierdzeń. Ponadto, jeśli muszę dodać jakieś nowe ulepszenie lub coś do niepowiązanej części systemu, której potrzebuję do innej pracy, zatwierdzam to ulepszenie osobno (i najpierw). Chodzi o to, że każda zmiana, którą ktokolwiek mógłby chcieć wprowadzić samodzielnie (lub cofnąć się samodzielnie), powinna być oddzielnym zatwierdzeniem. Pozwoli to zaoszczędzić mnóstwo bólu głowy, gdy nadejdzie czas na scalenie lub przywrócenie uszkodzonych funkcji.


4
+1 do tego. Wydaje się, że to taki ból, kiedy się angażujesz. Ale repozytorium pełne atomowych zatwierdzeń jest bezcenne, gdy przeglądasz stary kod.
Gordon Wilson

2
czy nie do tego służy gałąź feature ... wykonaj tyle zatwierdzeń ile potrzeba, w gałęzi feature, a kiedy będziesz gotowy, połącz ją z linią główną ... wycofywanie zmian oznacza tylko usunięcie scalonego zatwierdzenia. +1 za przechowywanie powiązanego kodu ...
farinspace

16

Wiele już zostało wspomnianych, a oto kilka więcej:

  1. Jeśli masz pliki, których nie chcesz mieć w kontroli źródła (np. Konfiguracja, skompilowane pliki itp.), Dodaj je do listy ignorowanych . W ten sposób zauważysz pliki, które zapomnisz dodać, zawsze oczekując pustej listy plików wyświetlanych jako nieznane w SVN.

  2. Dodaj zdarzenie po zatwierdzeniu, które wyśle ​​wiadomość e-mail na twoją listę mailingową deweloperów (lub taką, która jest specyficzna dla tego celu), dotyczącą zatwierdzonej zmiany i idealnie dla niej łatki.

  3. Zintegruj ze swoim trackerem błędów , aby odniesienia do zatwierdzeń pojawiały się w błędach / żądaniach funkcji z linkami do różnic. Obsługują to narzędzia do śledzenia błędów, takie jak MantisBT .

  4. Rozważ integrację z ciągłą integracją (np. CruiseControl.NET ), NAnt for Build i NUnit / VS dla testów jednostkowych. W ten sposób, gdy użytkownik zamelduje się w kodzie lub w zaplanowanym przedziale czasu, kod zostanie skompilowany, zostaną uruchomione testy jednostkowe, a programista otrzyma informację zwrotną o procesie. Zaalarmowałoby to również resztę zespołu, jeśli repozytorium jest uszkodzone (tj. Nie jest budowane).


Praktyka, której używamy, jest taka, że ​​wszystkie pliki konfiguracyjne mają zmienione rozszerzenia, takie jak config.php.config lub coś podobnego, w ten sposób przechowujemy nasze pliki konfiguracyjne na serwerze, ale każdy członek zespołu ma swoje własne. Kiedy coś duże zmiany w pliku konfiguracyjnym niż wykonujemy kopię formularza svn wersji ...
Zidane

15

Cóż, podstawy:

  • Utwórz tagi przed rozpoczęciem kontroli jakości wersji
  • Twórz tagi przed ryzykownymi zmianami (np. Dużymi refaktorami)
  • Utwórz gałęzie dla wydanych wersji, aby zamrozić kod.
  • Upewnij się, że ludzie wiedzą o konieczności aktualizacji przed rozpoczęciem pracy nad fragmentem kodu i dokonaj aktualizacji jeszcze raz przed jej wykonaniem.
  • SVN umożliwia wielokrotne wyewidencjonowywanie tego samego pliku przez różnych użytkowników. Upewnij się, że wszyscy rozwiązują wszelkie konflikty, które mogą wystąpić.
  • Nigdy nie używaj tego samego konta SVN dla więcej niż jednego użytkownika. Skutkiem mogą być straszne rzeczy.

7
Robię odwrotnie z moimi gałęziami i tagami. Gałęzie służą do rozwidleń z pnia, które ostatecznie łączą się z pniem. Tagi służą do zawieszania się kodu.
steve_c

1
Gałęzie to kopie, które mogą się zmieniać. Tagi to kopie, które NIE powinny się zmieniać. svnbook.red-bean.com/en/1.2/svn.branchmerge.tags.html
matpie

Robię podobną rzecz. Oznaczam i rozgałęziam kod, gdy udostępniam kod do kontroli jakości lub produkcji. W ten sposób mamy znacznik tylko do odczytu, a także gałąź do rozwiązywania problemów z poprawkami dla tego wydania, które nie będą miały wpływu na rozwój nowych funkcji, które mogą mieć miejsce w linii głównej.
JamesEggers

Svn umożliwia również wielokrotne pobieranie tego samego folderu dla tego samego użytkownika. Więc jeśli okaże się, że musisz dokonać zmiany, która nie jest związana z twoją obecną pracą (np. Klient dzwoni po naprawę awaryjną lub przypadkowo znajdziesz zupełnie niezwiązany błąd), sprawdź ponownie i napraw ją osobno.
PMF

„Tagi” powinny być używane do zawieszania się kodu. Jeśli spróbujesz zmienić gałąź "tag", twój klient SVN nawet cię ostrzega.
Danijel,

12

Odpowiedzi, których udzielają ludzie, są świetne. Wiele z tego jest podsumowanych w dokumentacji użytkownika svn zawierającej najlepsze praktyki dotyczące SVN .
Powtarzać:

  1. Skonfiguruj strukturę repozytorium (powinieneś mieć katalog główny projektu z linią główną, gałęziami i tagami pod spodem)
  2. Wybierz rozgałęzianie zasad (gałęzie prywatne, gałęzie na kamień milowy / wydanie / błąd itp.) I trzymaj się tego - zalecałbym więcej rozgałęzień zamiast mniej, ale nie ma potrzeby tworzenia oddziałów prywatnych
  3. Wybierz zasady ponownego tagowania - im więcej tagów, tym lepiej, ale przede wszystkim określ konwencje nazewnictwa tagów
  4. Wybierz politykę ponownie zobowiązującą się do połączenia trunkingowego - utrzymuj łącze trunk tak „czyste”, jak to tylko możliwe, powinno być możliwe do wydania w dowolnym momencie

To dość stara najlepsza praktyka, więc nie sądzę, żeby CollabNet ich już polecał. Czy są dostępne nowe sprawdzone metody? Ten, o którym wspomniałeś, pochodzi z SVN 1.0
mliebelt

1
@mliebelt - zaktualizowałem link do wersji apache. Niezależnie od wieku, pomysły wyboru struktury repozytorium, zasady rozgałęziania, zasady tagowania i zasady zatwierdzania linii głównej, wraz z naprawdę dobrymi odpowiedziami powyżej, są nadal aktualne.
hromanko

Ten opis „systemu rozgałęziania w razie potrzeby” jest jednak dość szalony. Brzmi jak przepis na strzelaninę w biurze.
naught101

10

Chciałbym podsumować najlepsze praktyki, których się trzymam:

  1. Nie zatwierdzaj plików binarnych . Powinno istnieć oddzielne repozytorium dla plików binarnych, takich jak Nexus , Ivy czy Artifactory .
  2. Powinna istnieć struktura repozytorium . Osobiście korzystam z następującej struktury repozytorium:

    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases
    
  3. Użyj określonej listy typów oddziałów . Moja lista jest następująca: eksperymentalna , konserwacja , wersje , platformy , wydania .
  4. Używaj określonych typów tagów : PA(pre-alpha), A(alpha), B(beta), AR(alpha-release), BR(beta-release), RC(release release), ST(stabilny).
  5. Zminimalizuj konieczność łączenia . Powinny istnieć zasady, kiedy łączenie jest możliwe / zalecane, a kiedy nie.
  6. Numeracja wersji . Powinien zostać ustalony sposób numerowania wersji, którego należy się trzymać. Zwykle jest to opisane w takim dokumencie jak Plan Zarządzania Konfiguracją Oprogramowania, jest częścią dokumentacji projektowej wysokiego poziomu. Osobiście stosuję złożone podejście do numeracji wersji. Zgodnie z tym podejściem wersje mają następujące wzorce: Nxx (gałęzie utrzymania / wsparcia), NMx (gałąź wydania), NxK (kompilacja), NMK (wydanie).
  7. Wykonuj tak często, jak to możliwe . Jeśli wydaje się to trudne (na przykład, gdy powinno być zbyt wiele zmian do wprowadzenia funkcji, a nawet kompilacji kodu), należy zastosować gałęzie eksperymentalne.
  8. Pień powinien zawierać najnowsze osiągnięcia . Na przykład, gdy istnieje wybór, gdzie opracować nową główną wersję ( Nxx ) aplikacji, w magistrali lub w gałęzi, zawsze należy podejmować decyzję na korzyść magistrali . Stara wersja powinna być odgałęziona na gałąź Maintenance / Support . Zakłada, że ​​istnieje wyraźne rozróżnienie między wersjami głównymi, a ich specyfika (architektura, kompatybilność) pojawia się możliwie najwcześniej .
  9. Ścisłe zasady „nie przerywaj kompilacji” w gałęziach wydania . W międzyczasie niekoniecznie musi być rygorystyczny dla linii głównej, o ile może mieć eksperymentalny rozwój lub bazę kodów, która wymaga rozwiązania problemów ze scalaniem.
  10. Użyj svn: externals . Pozwoli to na modularyzację projektu, ustanowienie przejrzystej procedury zarządzania wydaniami, podzielenie i podbicie różnych funkcjonalności.
  11. Użyj śledzenia problemów . Będziesz mógł wskazać odniesienie do problemu w komunikacie zatwierdzenia.
  12. Wyłącz puste komunikaty o zatwierdzeniach . Można to zrobić za pomocą haków przed zatwierdzeniem.
  13. Zdefiniuj, które gałęzie chcesz stale integrować . Na przykład wolę ciągłą integrację dla gałęzi trunk , maintenance i release .
  14. Ustanowienie polityki ciągłej integracji dla różnych typów oddziałów. Jak wspomniałem wcześniej, najbardziej rygorystyczne zasady „nie psuj kompilacji” dotyczą wydawania gałęzi, podczas gdy gałęzie trunk i Maintenance mogą czasem ulec uszkodzeniu. Istnieje również różnica między listą inspekcji przeprowadzanych na gałęzi głównej / konserwacyjnej i gałęzi wydania .

Możesz znaleźć zarys moich najlepszych praktyk w Subversion w postaci diagramu ilustrującego główne zasady podejścia do zarządzania konfiguracją oprogramowania, które stosuję.


Więc jak pracujesz w zespole? Czy różni ludzie używają różnych gałęzi? Jak unikać konfliktów? Twoja odpowiedź nie obejmuje pracy zespołowej :(
DataGreed,

2
P: Jak unikać konfliktów? A: Minimalizacja konieczność scalania , Tułów powinien zawierać najnowszą rozwoju , popełnić tak często, jak to możliwe Q: Czy różni ludzie używają różnych oddziałów? O: Każda gałąź może być używana przez jedną lub więcej osób. Ważne jest również rozróżnienie typów gałęzi: eksperymentalna, konserwacyjna i wydana, pomaga uniknąć konfliktów. P: Twoja odpowiedź nie obejmuje pracy zespołowej O: Może się wydawać na pierwszy rzut oka. Korzystanie z kontroli wersji automatycznie oznacza pracę zespołową. Opisałem zbiór zasad (jako zasady ruchu drogowego), które pomagają jeszcze skuteczniej współpracować
alternatywa

7

Jedną z rzeczy, które uznałem za bardzo przydatne, jest właściwość svn: external, która oznacza, że ​​możesz odwoływać się do katalogów z innych repozytoriów do własnego. Daje naprawdę fajne sposoby organizowania kodu i danych. Oto kilka przykładów:

  1. Jeśli masz oddzielne repozytoria dla kodu różnych modułów / bibliotek i odniesień w tych, których używasz. Oznacza to, że możesz mieć meta repozytorium dla każdego pliku wykonywalnego. Jeśli jest to mały plik wykonywalny, który używa tylko kilku modułów, nie musisz pobierać całego drzewa. W efekcie otrzymujesz numery wersji SVN na moduł.
  2. Dodawanie dużych danych binarnych, takich jak skompilowane wersje bibliotek, do repozytorium kodu jest ogólnie uważane za zły nawyk, ale może być naprawdę wygodne. Jeśli po prostu dodasz wszystkie wersje wszystkich używanych bibliotek do innego repozytorium, możesz uzyskać to, co najlepsze z dwóch światów. Odwołujesz się do wersji bibliotek, których używasz w repozytorium kodu. Podczas sprawdzania repozytorium kodu otrzymasz zarówno kod, jak i pliki binarne. Jednak pliki binarne są przechowywane w dużym repozytorium, którego nie trzeba tworzyć tak rygorystycznie, jak kod źródłowy, a repozytorium kodu źródłowego pozostaje małe i zawiera tylko tekst.

1
Podoba mi się punkt 2. Ponieważ możesz określić numer wersji lub nie, używając svn: external, pozwoli ci to "przypiąć" niektóre biblioteki do określonych wersji, podczas gdy inni będą mogli "śledzić" najnowszą wersję.
j_random_hacker

Używanie "svn: external" jest jedną z najpotężniejszych i powiedziałbym, że jest to najbardziej podstawowa cecha SVN. To konieczność.
Danijel,

5

Skorzystaj z integracji z oprogramowaniem do śledzenia błędów. Jeśli używasz Bugzilli , możesz ją ustawić tak, aby jeśli Twój komentarz zaczynał się od „Bug XXXX”, Twój komentarz SVN jest automatycznie dodawany jako komentarz do podanego błędu, w tym łącze do interfejsu internetowego SVN do tej wersji.


Trac ma dobrą integrację svn do śledzenia błędów, a także oś czasu, różnice zatwierdzeń, wiki itp.
Doug Currie,

Jira śledzi również zmiany związane z problemami
Dan Soap,

4

Dowiedz się o narzędziach i konwencjach do rozgałęziania i scalania SVN.

Najlepszym sposobem pracy z innymi członkami zespołu jest rozbicie pracy na kompletne funkcje programistyczne / poprawki, a następnie praca nad indywidualnymi zmianami, każdą w gałęzi. Następnie scal zmiany z powrotem do głównej gałęzi / linii głównej, gdy zostaną ukończone / gotowe / zatwierdzone do scalenia.

W ten sposób jednostki mogą pracować nad wspólnym celem (na tej samej gałęzi lub na oddzielnych gałęziach) bez kolidowania z innymi zmianami.

Twój przebieg może się różnić, a to może być przesadą tylko dla dwóch lub więcej osób.


3

Jest to znacznie łatwiejsze, jeśli używasz dobrych narzędzi, które dobrze integrują się z SVN. Ułatwiają one sprawdzenie, co zostało zmienione, a następnie zatwierdzenie całości lub części zmian oraz częste aktualizowanie kopii roboczej do najnowszej wersji w SVN.

Polecam Tortoise SVN (jeśli używasz Windows) i Visual SVN (jeśli używasz VS).

Sprawdź również, czy możesz ustawić to tak, aby otrzymywać e-mail lub podobne powiadomienie za każdym razem, gdy zmiana zostanie zatwierdzona (zwykle zawiera również komunikat o zatwierdzeniu i listę zmienionych plików). Oferują to usługi takie jak CVSDude . Uważam, że pomocne jest wiedzieć zarówno, że aktualizacja została dokonana, a następnie mieć pewne pojęcie o tym, co zawiera ta aktualizacja, zanim zaktualizuję kopię roboczą.


3

Oprócz polityk rozgałęziających i in. (gdzie jeden rozmiar zdecydowanie nie pasuje do wszystkich), powinieneś mieć dobre commity:

  • Jeśli to możliwe, zatwierdzenie powinno odnosić się do pojedynczego fragmentu pracy; poprawka błędu, nowa funkcja - powinna istnieć „logika” co do wprowadzanych zmian
  • Zatwierdzenie powinno mieć opisowy komentarz, który pomoże ci zlokalizować go podczas przeglądania historii repozytorium. Większość ludzi sugeruje napisanie na początku jednego zdania opisującego cały commit i bardziej szczegółową relację poniżej
  • Jeśli to możliwe, powinieneś powiązać zatwierdzenie ze swoim systemem śledzenia błędów, jeśli to możliwe. Trac, Redmine i in. pozwalają tworzyć linki od błędów do zatwierdzeń i odwrotnie, co jest bardzo przydatne.


2

Skonsultuj się ze swoim zespołem na temat ich zmian lub przynajmniej przyjrzyj się bardzo uważnie różnicom, zanim naprawisz jakiekolwiek konflikty scalania. Poproś ich, aby sami przejrzeli scalony kod, aby upewnić się, że ich dodatki nie zostały utracone podczas scalania.


2

Jedną z rzeczy, które widziałem, która zmniejsza zepsute zatwierdzenia, jest posiadanie dobrych skryptów przed zatwierdzeniem. Na przykład można uruchomić dowolne testy jednostkowe przed zatwierdzeniem zmiany. Spowoduje to, że zatwierdzanie będzie trochę powolne, ale oszczędzasz czas, unikając nadepnięcia komuś na palce i konieczności przepraszania. Oczywiście staje się to o wiele trudniejsze do zarządzania, gdy masz duży zespół programistów i bardzo często zatwierdzasz.


+1 dla skryptów przed zatwierdzeniem. Świetny pomysł. Zastanawiam się, czy jest sposób, aby git dał ci klapsa za rękę, jeśli spróbujesz zgodzić się bez uruchamiania go?
naught101

2

Jednym z przykładów integracji z trackerem błędów i egzekwowaniem polityki zatwierdzania mogą być skrypty przechwytujące svn Traca przed / po zatwierdzeniu, które mogą odmówić zatwierdzenia, jeśli wiadomość o zatwierdzeniu nie odnosi się do żadnego biletu w module śledzenia błędów i dodaje komentarze do istniejących bilety oparte na zawartości wiadomości (tj. komunikat o zatwierdzeniu może zawierać coś w rodzaju „Poprawki # 1, # 2 i # 8”, gdzie # 1, # 2, # 8 to numery zgłoszeń).


2

Najlepsza praktyka korzystania z SVN :

  1. Kiedy po raz pierwszy przyszedłeś do biura i otworzyłeś swój projekt Eclipse , pierwszym krokiem, który musisz zrobić, jest aktualizacja projektu.

  2. Po zaktualizowaniu rozpocznij pracę. Po zakończeniu kodowania sprawdź, czy Twoja aplikacja działa poprawnie bez żadnych wyjątków. Gdy masz pewność, że kod działa prawidłowo, czas go zatwierdzić.

Uwaga: podczas zatwierdzania kodu nie zatwierdzaj bezpośrednio. Zsynchronizuj się z serwerem i sprawdź, co należy zrobić. Uwaga: nie zatwierdzaj całego folderu raz. Ponieważ możliwe, że dokonałeś pewnych zmian w pliku zgodnie z wymaganiami lub możesz usunąć niektóre pliki w systemie lokalnym. Ale ustawienia są inne na serwerze. Więc sprawdź pliki indywidualnie i zatwierdź kod.

  1. Nie zatwierdzaj / aktualizuj plików konfliktów bezpośrednio.

  2. Kiedy nadpisywać i aktualizować?

    Kiedy jesteś prawie pewien, że nie potrzebujesz żadnych lokalnych zmian i chcesz całkowicie zaktualizować kopię serwera. Zwróć uwagę, że jeśli raz dokonasz nadpisania i aktualizacji, nie otrzymasz żadnych lokalnych zmian.

    Uwaga: nie przechowuj projektu bez aktualizacji dłużej niż jeden dzień. Nie przechowuj kodu bez zatwierdzania przez wiele dni.

  3. Poinformuj, kto pracuje nad tym samym komponentem i omów, jakie zmiany wprowadzili każdego dnia.

  4. Nie zatwierdzaj właściwości i pliku konfiguracyjnego, chyba że jest jakiś powód. Ponieważ ustawienia będą inne na serwerze iw chmurze.

  5. Nie zatwierdzaj folderów docelowych do SVN, tylko kod źródłowy i foldery zasobów muszą być utrzymywane w repozytorium SVN.

  6. Kiedy zgubiłeś kod, nie panikuj! Możesz odzyskać wcześniejszą kopię z historii SVN.

  7. Nie wysyłaj projektu do wielu miejsc na dysku. Sprawdź to w jednym miejscu i pracuj z nim.



1

SVN sam w sobie to dobry początek, a niektóre inne postery przedstawiają świetne sugestie dotyczące najlepszych praktyk.

Jedyne, co chciałbym dodać, to to, że powinieneś łączyć SVN z CruiseControl lub TeamCity, aby prowadzić proces ciągłej integracji. Spowoduje to wysłanie wiadomości e-mail dotyczących kompilacji i powiadomienie wszystkich, gdy ktoś zepsuł kompilację.

To będzie bardzo wymowne, kto śledzi Twój proces, a kto nie. Może to prowadzić do pewnych tarć, ale na dłuższą metę twojej drużynie będzie lepiej.


1
zgodził się, CruiseControl wielokrotnie uratował mój zespół.
Gordon Wilson,

1
  • Precyzyjny komentarz do każdego zatwierdzenia

  • Nie przerywaj (głównej) kompilacji!

  • Zatwierdź, gdy tylko jednostka logiczna ulegnie zmianie

  • Unikaj używania Subversion jako narzędzia do tworzenia kopii zapasowych

  • Trochę rozgałęziania / scalania, jak to możliwe

.

Więcej szczegółów można znaleźć w sprawdzonych metodach SVN .


0

Wykonuj pracę DEV na oddziałach

  1. Częste zobowiązania do Twojego oddziału
  2. Dyskretne / modułowe zobowiązania do Twojego oddziału ( patrz tutaj )
  3. Często aktualizuj / łącz z magistrali. Nie siedź na swojej gałęzi bez ponownego bazowania

Community Trunk

  1. Powinien zawsze budować / działać
  2. Jeden problem na zatwierdzenie ( ponownie zobacz tutaj ) Przeważnie po to, abyś ty lub inni mogli wycofywać się pojedynczo
  3. Nie łącz zmian refaktoryzacji / białych znaków ze zmianami logicznymi. Twoi koledzy z drużyny będą mieli trudności z wydobyciem tego, co faktycznie zrobiłeś z zatwierdzenia

Pamiętaj, że im bardziej przyrostowe, modułowe, dyskretne i zwięzłe zobowiązania będą, tym łatwiej będzie Tobie (lub prawdopodobnie innym):

  • Stopniowo wycofuj zmiany
  • Wizualnie uświadom sobie, co faktycznie zrobiłeś, bez przesiewania ton białych znaków i zmiany nazw zmiennych.
  • Komunikaty dotyczące zatwierdzenia mają większe znaczenie, gdy stosunek wykonanej pracy do długości wiadomości jest niższy.

0

Użyj tego dla szablonu komentarzy:

[zadanie / historia xxx] [drugorzędne / główne] [komentarz] [komentarz uzupełniający] [adres URL do błędu]

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.