2011-12-27 17 views
13

Ho modificato alcuni file in svn, in questo modo:SVN: Come ignorare un file modificato su commit?

$svn st 
M a 
M b 
... 

Ora, voglio i miei cambiamenti al svn, per qualche ragione, non voglio commettere file di b, c'è un modo veloce o comando per ignorare il file modificato b?


Infine, io uso @yzucker Soluzione 1, cp, ripristinare e impegnarsi. Gli elenchi delle modifiche sono troppo pesanti, grazie a tutti.

risposta

7

Purtroppo, il commit di molti file con alcune fastidiose modifiche ha ignorato il problema.

Soluzione 1: copia, ripristinare e impegnarsi

$cp b /tmp/ 
$svn revert b 
$svn commit -m 'commit message' 
$mv /tmp/b ./ 

Soluzione 2: copia, commit, invertire l'effetto di b, reimpegnarci b

$cp b /tmp/ 
$svn commit -m 'commit message' 
$svn merge -c -{new revision} b 
$svn commit b -m 'revert message for b' 
$cp /tmp/b ./b 

Il secondo approccio è meno preferibile poiché si introduce codice rotto in svn.

+1

Bella idea, questa dovrebbe essere una funzionalità di Subversion stessa. Dovrebbe esserci un flag (chiamiamolo '-X') che escluderà i file dal commit. – mliebelt

3

Non penso ci sia un'opzione per escludere un solo file e includere tutti gli altri che sono stati modificati. Nell'esempio, è possibile includere solo i file che si desidera eseguire il commit da

svn co a -m "Only commit a" 

che quindi escluderà b. Vedi lo documentation of the command con gli esempi alla fine.

Un'altra opzione potrebbe essere quella di utilizzare changelists, ma che è più pesante ...

+1

Io uso gli elenchi di modifiche per questo scopo (sebbene non tramite la riga di comando). –

+0

Se ci fossero elenchi di modifiche per definire i file da escludere esplicitamente, questa potrebbe essere un'opzione. Ma spesso, hai molti file modificati (non nell'elenco delle modifiche) e vuoi solo 1 * non * per il commit ... – mliebelt

2

Se il file b è già stato aggiunto alla repository, non è possibile ignorare più. È necessario eliminare questo file, si impegnano, ricreare e impostare ignorare proprietà come questa:

svn propset svn:ignore b . 

Il punto finale significa cartella corrente.

Se si vuole ignorare i file solo in questo commesso, digitare i loro nomi in modo esplicito nel commettere comando

svn co a c d 

Dove a, c, d sono file che si desidera impegnarsi.

+0

L'ultimo comando dovrebbe essere "svn ci a c d'? Questa è una soluzione, grazie. – fannheyward

15

È possibile utilizzare la funzione di Changelist clienti Subverion più recenti, come mostrato in questa sessione breve esempio:

$ svn st 
M  a 
M  b 

$ svn cl task1 a 
$ svn cl task2 b 

$ svn st 
--- Changelist 'task1': 
M  a 
--- Changelist 'task2': 
M  b 

$ svn ci --cl task1 -m "checking in only task 1 stuff" 
Sending  a 
Committed revision 11. 
+0

Che cos'è la versione svn? –

2

Su Windows si può usare GUI client TortoiseSVN e basta scegliere caselle solo necessari.

Problemi correlati