2009-05-21 8 views
51

È possibile ignorare le modifiche a un file in subversion localmente su un solo client, senza propagare l'ignore all'intero repository?Subversion: ignora le modifiche a un file localmente su un solo client

Il problema specifico di cui mi occupo è che ho verificato un progetto e modificato un gruppo di file incluso il Makefile, che è già parte del repository. Ora l'ambiente su cui sto lavorando è diverso dal resto del gruppo e voglio che le modifiche apportate ai Makefile rimangano locali sulla mia macchina e non vengano commesse.

Tuttavia, non voglio impostare svn: ignore perché credo che commetterebbe l'ignora al repository, mentre è importante mantenere il file make lì.

+4

Fondamentalmente, penso che tu stia cercando di risolvere il problema sbagliato. Perché non modificare i Makefile per funzionare correttamente in entrambi gli ambienti? –

+22

Nicholas, anche se fuad non sta usando il miglior approccio al suo problema, sono abbastanza sicuro che ci sono ragioni legittime per creare ignorazioni che si applicano solo alla tua copia di lavoro. – allyourcode

+7

Sono d'accordo con allyourcode. Uno sviluppatore (utente di svn) potrebbe non avere il privilegio o il desiderio di cambiare i principi fondamentali. Vorrei anche una soluzione a questo problema. Abbiamo i file delle proprietà dell'ambiente registrati nel nostro repository. Quando li cambio localmente, devo deselezionarli manualmente quando eseguo il check-in. È solo questione di tempo prima che mi dimentichi di deselezionarli.Sono d'accordo che questi file NON dovrebbero essere nel nostro repository, ma non ho l'autorità per prendere questa decisione, quindi ho davvero bisogno di una soluzione alternativa. – andersonbd1

risposta

-3

Utilizzare svn export per esportare il file in modo che non sia sotto controllo di versione.

http://svnbook.red-bean.com/en/1.0/re10.html

edit: Comunque credo che questo deve essere fatto su una base per-directory, in modo che avrebbe dovuto riorganizzare i file in qualche modo.

Non riesco a testare questo al momento, ma sarebbe un checkout sparse aiutarti qui?

http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html

+0

Non funziona, fa ancora parte del repository e si presenta come modificato – fuad

+1

Non sono sicuro che sia possibile esportare i file all'interno di una directory con versione. –

+0

Non sono sicuro del motivo per cui questo è stato votato così pesantemente. Questo funziona in un numero di situazioni in cui altre soluzioni no. In particolare funziona per me perché avevo due requisiti extra. 1) No TortoiseSVN (Sono in OS X) 2) Non voglio modificare le mie abitudini per tenere conto delle liste di modifiche. Modifica: testato e funzionante all'interno di una directory con versione btw. È possibile rimuovere la directory specificata (dall'interno della directory) con "svn update. --set-depth = empty" e quindi è necessario controllarlo di nuovo con "svn export --force svnrepopath/directory". – radicaledward101

1

La soluzione sicura vicino mi viene in mente è quello di utilizzare un ramo personale.

+1

Come può essere d'aiuto? Quando vuoi unirmi al tronco, avrai un altro (peggio?) Problema: NON unire i file che volevi ignorare. – allyourcode

+1

Puoi commettere il tuo cambiamento personale nella tua filiale personale con un messaggio che dice "non unire" e prestare attenzione a quel messaggio quando si uniscono, ma sarà presto sepolto in cambiamenti più recenti; puoi persino contrassegnare quella revisione come già unita che dovrebbe impedire un'unione accidentale. BTW Non sapevo degli elenchi di modifiche e sono decisamente migliori di un ramo per questo scopo. – Gleb

10

Se si usa Subversion 1.5.x o superiore è possibile utilizzare changelists:

svn cl COMMIT /path/to/project/* 

svn cl NOT_COMMIT /path/to/project/Makefile 

Nota: con il secondo comando Makefile saranno rimossi dal primo elenco modifiche. Puoi ignorare l'avviso.

Non eseguire il commit del secondo elenco di modifiche.

do commette via:

svn ci --cl COMMIT -m"<LOG MESSAGE HERE>" 

Importante: Se si impegnano senza -CI opzione, tutte le modifiche saranno impegnati

+1

svn cl potrebbe non essere una buona opzione, perché non supporta l'aggiunta di directory agli elenchi di modifiche. Questo è un problema se ci sono delle directory che hai svn aggiunto che vuoi nel tuo commit. Gli elenchi di modifiche – allyourcode

+2

sembrano utili, ma non penso che si applichino davvero qui. È un caso d'uso diverso. Potrebbero funzionare se i comandi di default hanno ignorato i file che si trovavano in un elenco di modifiche - ciò sarebbe davvero utile. Ma a meno che non mi sbagli, non è così che funziona. Se non si specifica un elenco di modifiche in un comando, si comporta come se gli elenchi di modifiche non esistessero, corretto? Quindi, anche se i changelists hanno supportato le directory, non sarebbe una soluzione ideale. Dovresti spostare manualmente i file che vuoi veramente registrare in un elenco di modifiche. Preferirei solo segnare manualmente i file che NON voglio controllare. – andersonbd1

38

Come per molti aspetti di svn, tartaruga rende davvero facile. In effetti, credo che la tartaruga aggiunga effettivamente caratteristiche usando le funzioni svn esistenti in modo sistematico. Mi rendo conto che questa risposta è solo Windows, quindi, ma forse alcune persone là fuori sono come me e usano ancora Windows. Nel popup "Controlla le modifiche" fai semplicemente clic con il pulsante destro del mouse sui tuoi file e seleziona "Sposta in elenco delle modifiche" -> "ignora su commit". Ora, quando esegui il check-in usando la tartaruga, segmenta le tue modifiche nei vari elenchi di modifiche, quindi almeno puoi visivamente indicare ciò che vuoi impegnare e ciò che non vuoi impegnare.

+3

Bello! ma il file (e quindi la cartella) appare ancora come modificato. – Loda

+0

Sì, sto riscontrando lo stesso problema. Tutto ciò non impedisce l'aggiornamento/commando accidentali. – ArtB

+2

Come precedentemente affermato, questo è perfetto, tranne che mostra che il file è stato modificato. È meglio che dover deselezionare tutti quei file ogni volta che commetto, comunque. –

Problemi correlati