2009-04-14 17 views
7

myślę o liście, że mogę odnosić się inne deweloperom do rzeczy jak:Jakie są najlepsze praktyki zarządzania kontrolą i kontrolą źródła?

  1. One kompilacji skryptu, takie jak makefile, będą budować i przetestować cały projekt
  2. Wszystkie komponenty do potrzebnej budowie system musi być sterowany przez źródło:

Ktoś ma taką listę? W kolejności pierwszeństwa?


AKTUALIZACJA - dodano kilka FYI szczegółowości

systemu, o którym mowa składa się z C++, Java i makefile z mrówce, która prowadzi do wojen, a także Powerbuilder i C# elementów GUI. Cały kod jest zszeregowany.

Poszukuję więc zarówno ogólnych, jak i specyficznych dla danego języka dobrych praktyk.

Odpowiedz

7

Dla mnie zasada nr 1 brzmi:

Główny oddział jest święte - musi być zawsze buildable, zdolny do przechodzenia BVT, a przede wszystkim być użyteczny.

Każdy kod, który może przejść do głównej gałęzi, która powoduje przerwanie kompilacji lub BVT, ujawnia błąd w procesie. Proces powinien umożliwiać buddom/testy dla pojedynczych systemów oddziałów lub wymagać, aby oddziały dzieci budowały i przekazywały BVT przed połączeniem się z główną gałęzią lub innymi zabezpieczeniami.

+0

uhmm, jeśli mogę zapytać, co to jest BVT? – bluezald

1

Jest to bardzo zależne od tego, w jakim środowisku się budujesz?

  • Czy to C/MakeFile?
  • Czy to Java/JUnit/Ant?
  • Czy to .NET/NUnit/NAnt?
  • Czy to .NET/MSUnit/MSBuild?
  • Czy Ruby ...
  • Czy to Python ...
  • Czy jest PHP

Każdy z nich różnią się w podejściu i konfiguracji. Musimy więc znać twoją konfigurację, zanim będziesz mógł otrzymać pomoc.

+0

dodane informacje szczegółowe: System, o którym mowa, składa się z C++ i plików Makefile, Javy z Mrówką, która powoduje WAR, a także komponenty Powerbuilder i C# Gui. Cały kod jest zszeregowany. Poszukuję więc zarówno ogólnych, jak i specyficznych dla danego języka dobrych praktyk. –

1

Mój numer jeden element:

  • Aktualizacja często popełniają często

lub, jak stawia Jeff jest: Check In Early, Check In Often.

+1

Czytając komentarze do tego wpisu na blogu, przekonasz się, że zdecydowanie nie zgadzam się z tym sentymentem. Systemy kontroli wersji są przeznaczone do kontroli wersji oprogramowania, a nie do tworzenia kopii zapasowych zmian pośrednich. Dobry redaktor powinien to dla ciebie zrobić. (wersja-kontrola w Emacsie) –

+0

Cóż, to długa dyskusja i szczerze tego nie przeczytałem, ponieważ po kilku komentarzach nie mogłem znaleźć żadnych istotnych nowych punktów. –

0

Jeśli przekazać te pytania z „Joel Test”, powinno być na dobrej drodze:

Używasz kontroli źródła?
Czy robisz codzienne kompilacje?
Czy masz bazę danych błędów?
Czy naprawiasz błędy przed napisaniem nowego kodu?

Mój numer 1 to: Czy można wykonać kompilację w jednym kroku?

The Joel Test

0

Będąc menedżerem SCM, najlepszą odpowiedź, że mogę dać Ci na to pytanie brzmi „to zależy”. Twoja lista i kolejność ważności pozycji na liście zależy od wymagań projektu, języka, którego używasz i poziomu programisty.

Jedna rzecz, którą możesz chcieć uważać za ważną (lub # 1) na KAŻDYM liście, które zestawiasz, to że pnia lub główna gałąź twojego narzędzia jest BARDZO silnie kontrolowana i tylko bardzo nieliczni mają dostęp do importu lub zatwierdzić zmiany w nim. Pozwoli to zaoszczędzić mnóstwo bólów głowy w czasie zwolnienia.

elementy, które można w każdej liście można umieścić razem jest:

  • Przy check-in (codziennie, co tydzień, częściej, rzadziej)
  • Kiedy buduje się zrobić (codziennie, co tydzień, itd.)
  • Zastosowanie podwójnych repozytoriach (inżynieria vs produkcji)
  • Pozwól binarne w repozytorium
  • Pozwól oprogramowania firm trzecich w repozytorium
  • Wszystkie elementy niezbędne do budowy w repozytorium
  • gdy przywóz lub zobowiązuje do tułowia wykonywane są
  • korzystają z jednego pliku do eksportu i budowania
  • Pozwól zameldowania z/bez informacji raportu bug
  • Wymuszanie zameldowania komentarz standardy

Lista może trwać i trwać w zależności od konkretnych wymagań, ale myślę, że masz ogólne pojęcie o tym, co jest tutaj.

1

System musi sam się sam zbudować, sam przetestować i samodzielnie pobrać zależności. Mam makefile pobieranie, budowanie i wdrażanie środowiska wykonawczego, które jest "certyfikowane" dla mojej wersji trunk. Ten plik Makefile jest również przypisany do repozytorium.

Pamiętaj popełnić kolejny, bardzo ważny, a przede wszystkim pomijane rzeczy (jest w zestawie): trzy (! Umieścić wersję na nim)

  • Kod SQL, który tworzy układ bazy danych.
  • Kod SQL, który wywołuje wersję układu bazy danych (upgrade)
  • Kod SQL, które obniżyć wersję układu bazy danych (downgrade)
0

cały proces „Pobieranie najnowszych” i "budynek" powinien być gładki, łatwy, szybki i niezawodny.

Jeśli nie, programiści często pomijają najnowsze i nadal pracują nad ich nieaktualnymi kopiami i to jest coś, czego chcemy uniknąć.

To jest mniej więcej to, co Michael said- ale chcę podkreślić, że poza branży jest święte i stable- cały proces powinien być szybki i łatwy

Kinda jak filozofią Google'a że Downloads \ instalacje powinny być szybkie i łatwe

Powiązane problemy