2010-07-29 11 views
8

Nei giorni precedenti a un rilascio, vorremmo essere in grado di impedire agli sviluppatori di inviare file al ramo SubVersion, a meno che un capo squadra non abbia esaminato e approvato le modifiche (in caso avrebbero fatto un cambiamento temporaneo per consentire questo).Blocco di un ramo SubVersion nei giorni precedenti a un rilascio

Precedentemente abbiamo usato ClearCase, in cui questo era relativamente facile da fare.

Poiché il comando svn: lock funziona solo su una base per file, non siamo sicuri di poter emulare questo comportamento in SubVersion.

Cosa fai?

risposta

6

È possibile dare un'occhiata ai client svn della GUI che di solito hanno un'interfaccia/funzionalità più ricca rispetto a quella della riga di comando. Ad esempio, sto usando TortoiseSVN che ha le opzioni Get Lock/Release Lock applicabile per il blocco di tutti i file nella cartella selezionata in modo ricorsivo. BTW, ha anche un'opzione conveniente di fare tag/ramo e passare ad esso come una sola azione.

+0

Questa risposta risponde meglio alla mia domanda, tuttavia il meccanismo di blocco di rilascio/rilascio è piuttosto lento, poiché esegue in modo ricorsivo la modifica su tutti i file. Pertanto non sono sicuro che effettivamente utilizzeremo questo approccio. –

+2

Esatto, utilizziamo ampiamente il repository svn nel nostro lavoro e non utilizziamo il locking. Abbiamo convenzioni su trunk/tag/rami, quindi nessuno si impegna a tag; facciamo solo correzioni di bug nel ramo di rilascio e l'intera attività sul progetto può essere facilmente vista attraverso WebSVN. – pmod

3

È possibile aggiungere un hook di pre-commit sul server, che verifica se la destinazione di commit contiene rami chiusi e forse una parola chiave nel messaggio di log per ignorare questo controllo.

+3

La parola chiave, ovviamente, dovrebbe essere * sesame *. – bzlm

13

Pensare lateralmente - perché non creare un ramo solo nel punto in cui si desidera "bloccarlo" e controllare solo il numero di revisione nel processo di creazione/rilascio.

Quindi gli sviluppatori possono ancora effettuare il check-in nel trunk (o in qualsiasi altro ramo su cui stanno lavorando) e se un responsabile del team approva le modifiche per il rilascio, possono essere unite nel ramo. Concesso che questo non blocchi effettivamente il ramo di rilascio, ma almeno è possibile rintracciare/annullare le modifiche se necessario e non impedisce alle persone di lavorare. L'origine degli sviluppatori punta ancora sul ramo/tronco su cui stavano lavorando piuttosto che sul nuovo ramo di rilascio.

Creare filiali è molto economico e facile in SVN (credo).

0

Quello che facciamo è spostare il ramo su un tag e avere accesso solo in lettura al tag.