2009-04-14 4 views
7

Sto pensando a una lista che ho potuto fare riferimento ad altri sviluppatori di con cose come:Quali sono le best practice per il controllo del codice sorgente e la configurazione?

  1. Uno script di build, come ad esempio makefile, costruirà e testare intero progetto
  2. Tutti i componenti per costruire necessario la necessità del sistema da fonte controllata

Qualcuno ha un elenco del genere? In ordine di priorità?


UPDATE - ha aggiunto alcuni dettagli FYI

sistema in questione si compone di C++ e makefile, Java con la formica che si traduce in guerre, così come componenti GUI PowerBuilder e C#. Tutto il codice è in vigore.

Quindi sono alla ricerca di best practice sia generiche che linguistiche.

risposta

7

Per me, la regola # 1 è questo:

Il ramo principale è sacro - deve sempre essere edificabile, in grado di superare BVT di, ed essere praticamente utilizzabile.

Qualsiasi codice consentito nel ramo principale che causa una interruzione di build o BVT presenta un errore nel processo. Il processo dovrebbe consentire build/test di buddy per i sistemi a singolo ramo o richiedere che le filiali figlio costruiscano e passino a BVT prima di unirsi al ramo principale, o altre garanzie di questo tipo.

+0

uhmm, se posso chiedere, che cos'è un BVT? – bluezald

1

Questo dipende in gran parte da quale ambiente si sta costruendo?

  • C/MakeFile?
  • Java/JUnit/Ant?
  • E '.NET/NUnit/NAnt?
  • È .NET/MSUnit/MSBuild?
  • E 'Rubino ...
  • E' Python ...
  • E 'PHP

Ognuno di questi differiscono nell'approccio e la configurazione. Quindi abbiamo bisogno di conoscere il tuo setup prima di poter essere aiutato.

+0

dettagli delle informazioni aggiunte: il sistema in questione è costituito da C++ e makefile, Java con formica che risulta in WARs, così come i componenti di powerbuilder e C# gui. Tutto il codice è in vigore. Quindi sono alla ricerca di best practice sia generiche che linguistiche. –

1

Il mio numero di una voce:

  • Aggiornamento spesso, commettono spesso,

o, come mette Jeff è: Check In Early, Check In Often.

+1

Leggendo i commenti di quel post del blog, scoprirai che non sono d'accordo con questo sentimento. I sistemi di controllo di revisione sono destinati a controllare le revisioni del software, non a eseguire il backup delle modifiche intermedie. Un buon editor dovrebbe farlo per te. (version-control in Emacs) –

+0

Bene, questa è una lunga discussione e sinceramente non l'ho letta perché non sono riuscito a trovare nuovi punti rilevanti dopo alcuni commenti. –

0

Se si passa queste domande del "Test di Joel", si dovrebbe essere sulla strada giusta:

Usi controllo del codice sorgente?
Realizza build giornaliere?
Hai un database di bug?
Correggi bug prima di scrivere un nuovo codice?

Il mio n. 1 è: puoi creare una build in un solo passaggio?

The Joel Test

0

Essendo un manager SCM, la migliore risposta che posso darvi su questa domanda è "dipende". L'elenco e l'ordine di importanza degli articoli nell'elenco dipendono dai requisiti del progetto, dalla lingua utilizzata e dal livello di sviluppatore.

Una cosa che potresti voler considerare importante (o n. 1) in QUALUNQUE elenco che hai messo insieme è che il bagagliaio o il ramo primario del tuo strumento sia MOLTO fortemente controllato e solo pochi selezionati hanno accesso all'importazione o impegnarsi a modificarle. Ciò consentirà di risparmiare un sacco di mal di testa al momento del rilascio.

elementi che possono essere su qualsiasi lista che messi insieme sono:

  • Quando il check-in (giornaliera, settimanale, più spesso, meno spesso)
  • Quando generazioni sono fatto (giornaliera, settimanale, ecc)
  • L'utilizzo di doppi repository (ingegneria vs produzione)
  • Consenti binari nel repository
  • Consenti software di terze parti in repository
  • Tutti gli elementi necessari per costruire in repository
  • Quando importazioni o si impegna a tronco sono fatto
  • Utilizzare un file da esportare e costruire
  • Consenti il ​​check-in con/senza informazioni bug report
  • Imporre il check-in commento standard

L'elenco può continuare e continuare a seconda delle esigenze specifiche, ma penso che si ottiene l'idea generale con ciò che è qui.

1

Il sistema deve creare da solo, testare da solo e scaricare + creare dipendenze da solo. Ho un makefile che scarica, costruisce e distribuisce un ambiente di runtime che è "certificato" per la mia versione di trunk. Questo makefile è impegnato anche nel repository.

Ricordarsi di commettere un altro, molto importante, e per lo più trascurato cosa (è disponibile in un fascio di tre): (! Messo una versione su di esso)

  • Il codice SQL che crea il layout del database.
  • Il codice SQL che porta in primo piano la versione layout del database (per l'aggiornamento)
  • Il codice SQL che far cadere la vostra versione di layout del database (a downgrade)
0

L'intero processo di "ottenere l'ultimo" e "costruzione" dovrebbe essere liscia, facile, veloce e affidabile.

In caso contrario, gli sviluppatori tendono a saltare gli ultimi ea continuare a lavorare sulle loro copie obsolete e questo è qualcosa che si desidera evitare.

Questo è più o meno quello che Michael detto- ma voglio sottolineare che al di là del ramo di essere sacro e Stabile- l'intero processo dovrebbe essere facile e veloce

Un po 'come la filosofia di Google che permette di scaricare \ installazioni dovrebbero essere veloce e facile