2009-03-24 15 views
6

Attualmente dopo aver creato un ramo di rilascio, ma quando avremo un po 'di tempo prima di rilasciare, a volte apro l'intero ramo per la modifica e poi blocco tutti i file per impedire a chiunque di modificare qualcosa durante il periodo di "code-freeze" nel ramo di rilascio.Bloccare un ramo in modo forzato?

C'è un modo migliore? Farlo in questo modo sembra possibilmente un uso scorretto della funzione di blocco, c'è un modo migliore per impedire a qualcuno di controllare il codice senza utilizzare i rami. Io però di P4 proteggi ma non sono l'amministratore di questa istanza di perfor- mance, e anche il fatto di trattare il file di protezione con potenzialmente 100s di linee sarebbe ingombrante.

Qualche idea?

risposta

0

P4 protect è probabilmente la risposta giusta per la maggior parte delle persone, come spiegato in altre risposte.

Tuttavia, nella mia organizzazione non posso essere l'amministratore in questo modo è necessario avere uno script di trigger in perforce che legge un file di testo a cui i non amministratori hanno accesso in scrittura e controllare se il ramo appare nell'elenco. In questo modo non sarebbe necessario l'accesso di amministratore come p4 protect.

12

Lo faccio sempre come ingegnere di costruzione. Io uso 'p4 proteggere' per limitare l'accesso di tutti gli alberi a sola lettura: (. Supponendo che il gruppo 'tutti' è definito correttamente)

super group everyone * -//depot/project/branch/... 
read group everyone * //depot/project/branch/... 
super user me * //depot/project/branch/... 

La prima linea si chiude tutte le autorizzazioni per tutti gli utenti al ramo

La seconda riga ripristina le autorizzazioni di lettura per tutti.

L'ultima riga ripristina tutte le autorizzazioni solo per me.

+0

Hai bisogno di essere un amministratore di debug per fare questo? Inoltre, c'è solo un file di protezione per l'intero depot, non è ingombrante? Un errore di battitura e l'intero depot non funzioneranno correttamente? Queste sono le ragioni per cui stavo cercando di trovare un'alternativa da proteggere, ma comunque, se è l'unico modo che andrò con quello –

+1

Devi essere un amministratore per cambiare le protezioni (è la definizione di un amministratore in perforce.) Prima che le modifiche vengano accettate, il file viene controllato per gli errori. Ho alcune centinaia di voci nelle mie protezioni, ma si adatta bene alle mie esigenze di business, quindi è pulito e ovvio. – Sniggerfardimungus

2

p4 protect è sicuramente il modo migliore per andare - è quello che è lì per. Consiglio vivamente di mettere tutti i tuoi utenti in gruppi e di usare sempre solo gruppi nella tabella delle protezioni, molto più semplice da gestire.

È possibile proteggere a qualsiasi livello di granularità che ti piace, quindi non è ingombrante. Si noti inoltre che la versione del server 2008.1 ha una nuova funzione di protezione che consente di specificare cosa si può fare in un modo leggermente diverso. Modifica nota:

#152278 ** 
    'p4 protect' now allows specification of permission 'rights'. 
    Previously, 'p4 protect' only allowed using permission levels 
    which include the specified access (ie 'read') and also all 
    of its lesser permissions (ie 'read' = 'read' + 'list'). 
    Permission rights make it possible to deny individual rights 
    without having to re-grant lesser rights. The new 
    permission rights are '=read', '=branch', '=open', 
    and '=write'. This functionality was previously undocumented, 
    and is now fully supported for 2008.1 

Se davvero avete un problema con dover essere un amministratore per bloccare & sbloccare questo, allora si dovrebbe prendere uno sguardo alla funzione di "proprietario del gruppo" introdotto nel 2007.3. Ciò consentirà a un utente non super di aggiungere & rimuovere le persone da un gruppo. Quindi combinalo con la tabella delle protezioni. Cioè ottenere l'amministratore del sito per impostare la tabella delle protezioni e limitare i diritti a un gruppo denominato "Rel 1.0 Autorizzato" e renderlo proprietario del gruppo. È quindi possibile aggiungere e rimuovere utenti (o sottogruppi) da tale gruppo per controllare l'accesso.

L'opzione di attivazione è una possibilità, ma è ancora necessario essere un amministratore per impostare il trigger in primo luogo. Potresti anche influenzare il rendimento di tutti gli invii, che è qualcosa a cui prestare attenzione. Ma il problema principale con i trigger è che li useresti per emulare una funzione integrata progettata per tale scopo, ovvero la tabella delle protezioni. E, se volessi essere sicuro, avresti ancora bisogno di trovare un modo per impedire a chiunque altro di modificare il file di riferimento. Sembra solo un sacco di lavoro per emulare una funzionalità esistente.

2

Come una piccola aggiunta a una delle altre risposte. Innanzitutto imposta un gruppo "tutti" che contiene tutti gli utenti.Quindi aggiungere questo per proteggere p4

write group everyone * -//depot/project/1.0/... 
read group everyone * //depot/project/1.0/... 
write group 1.0 * //depot/project/1.0/... 

Questo vi permetterà di creare un gruppo "1.0" in cui è possibile aggiungere tutti gli utenti a cui è consentito l'accesso in scrittura.

Se si utilizza il server 2008.1, è possibile farlo.

=write group everyone * -//depot/project/1.0/... 
write group 1.0 * //depot/project/1.0/... 

La prima riga rimuove solo l'accesso in scrittura (non letto ed elencato) dal gruppo tutti.

2

Il modo per fare ciò nel moderno Perforce è utilizzare gli stream, rami denominati che si aggiornano sul sistema locale, e possono avere autorizzazioni applicate per incoraggiarvi a fare la cosa giusta durante l'unione e la copia tra i flussi.

È possibile restringere facoltativamente un flusso in modo che solo il proprietario del flusso possa effettuare il check-in (ed è possibile bloccare il flusso in modo che nessuno tranne il proprietario possa modificarne le proprietà). Vedi http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.codelines.html#codelines.streams

Problemi correlati