2010-10-25 6 views
5

voglio fare quanto segue:checkout utente singolo in SVN

Quando un utente sta modificando un file da SVN, nessun altro utente può modificare questo file fino a quando il primo utente si impegna suoi modifiche. Ci sarebbe un po 'di tipodi scrittura sui file in svn.

È possibile in SVN? Come farlo? È possibile impostare questo per un singolo file o directory (non per l'intero repository)?

Perché questo sarebbe utile? I conflitti su file binari e altri non possono essere facilmente risolti. Vorrei impostare i miei file excel in svn per essere bloccati nella scrittura come descritto sopra.

Vorrei dare una guida su come farlo in VisualSVN o TortoiseSVN che uso.

risposta

4

È possibile impostare la proprietà svn:needs-lock su tali file, quindi il file viene estratto "di sola lettura". Se vuoi modificarlo, devi bloccare il file con svn lock. Quel flusso di lavoro è lì esattamente per questo caso.

Vedere qui per informazioni su svn:needs-lock.

2

Il comando "svn lock" impedisce ad altre persone di commettere modifiche a un file. Non può impedirti di modificare il file, dal momento che svn non ha il controllo del file stesso una volta che è stato estratto. Puoi dire in modo procedurale a tutti di bloccare il file binario prima di modificarlo per impedire a qualcuno di apportare modifiche che non possono eseguire il commit.

0
  1. Non è possibile effettuare tale blocco di scrittura se qualcuno ha già una copia di lavoro. Puoi mettere il blocco regale. Ma può essere messo solo per file non per l'intera directory. Quindi altri utenti potrebbero non confermare le loro modifiche fino a quando il blocco non viene rilasciato. Se vuoi farlo per l'intera directory, dovresti scrivere uno script di hook. Questo viene eseguito sul lato server, sugli eventi, ad es. commettere evento, .... Si potrebbe mettere più logica in esso per vietare i checkout. Ma non è come dovremmo lavorare sotto svn. La possibilità di sviluppo parallelo è una delle caratteristiche chiave di svn.
  2. Writelock non è efficace perché qualcuno non dovrebbe lavorare sulla sua copia di lavoro in parallelo. Dovrà comunque fondersi alla versione più recente.