2009-06-04 15 views
18

Come posso ignorare i file dal mio repository SVN senza eliminarli?svn ignora senza cancellare file?

Quando lavoro su progetti esistenti, spesso devo impostare una versione locale del progetto e utilizzare anche il mio database locale. Con drupal, ad esempio, eseguo il checkout del repository svn, cambio il file settings.php in modo che corrisponda al mio database locale, ma ora devo assicurarmi di non eseguire nuovamente il commit del file delle impostazioni.

C'è qualche comando svn intelligente che risolverà questo?

+0

Vedere questo Q & A: http://stackoverflow.com/questions/69448/how-do-i-keep-resharper-files-out-of-svn –

+0

Più come http://stackoverflow.com/questions/862950/subversion-prevent-local-changes-to-one-file-from-being-committed –

+0

Possibili duplicati: http://stackoverflow.com/questions/940057/in-subversion-how-can-i-un-hijack -a-file http://stackoverflow.com/questions/714307/svn-ignoring-an-already-committed-file – TJR

risposta

-1

svn propedit svn: ignore ./some_path

For details see this post.

+0

Ho provato questo, ma il file delle impostazioni sarà ancora commutato –

+1

Sì, questo ignora un file solo locale ma non fa nulla per impedire il tracciamento di un file che era già nel repository. – GalacticCowboy

+1

L'OP ha già dichiarato che * non * desidera eliminare il file dal repository. svn: ignore non fa nulla se il file esiste ancora nel repository. – Coderer

6

Dalla Guida SVN:

Ho un file nel mio progetto che ogni sviluppatore deve cambiare, ma I don' t desidera che le mod locali siano mai assegnate a . Come posso rendere 'svn commit' ignorare il file? **

La risposta è: non mettere quel file sotto controllo di versione. Invece, metti un modello del file sotto controllo di versione, qualcosa come "file.tmpl".

Poi, dopo l'iniziale 'svn checkout', hanno gli utenti (o il vostro sistema di compilazione ) fare una copia normale del sistema operativo del del modello per il buon nome del file, e hanno agli utenti di personalizzare la copia. Il file non è controllato, quindi non verrà mai eseguito il commit . E se lo desideri, puoi aggiungere al file svn della directory principale: ignora la proprietà, quindi non è visualizzato come '?' nel comando "svn status" .

+5

sì che risolverebbe il problema, ma il file delle impostazioni è già sotto controllo svn, e non voglio cambiarlo dal momento che dovrei cambiarlo anche nell'ambiente di produzione che non posso –

+1

il file di produzione non dovrebbe essere nel controllo del codice sorgente se contiene informazioni sulla stringa di connessione per il database. molto più sicuro è avere un link simbolico al file (in una posizione più sicura rispetto al repository di origine) creato dal processo di compilazione/distribuzione. – Jeremy

+0

Si prega di tenere presente che "dovrebbe" è un verbo che "dovrebbe" applicarsi solo in mondi perfetti non umani. La domanda riguardava come ignorare il commit on invece di ignorare (in tal modo cancellare fisicamente) i file di lavoro. I BIN possono essere ignorati ed eliminati, ma i file conn non possono essere cancellati ma devono essere ignorati durante i commit. – user3285866

1

Creare una versione del file denominata ".template" e controllo di versione quello. Quando esegui il checkout, rinomina e modifica come necessario. Quindi usa svn propedit svn: ignore per ignorare la copia.

1

Una possibile soluzione sarebbe utilizzare gli elenchi di modifiche. È possibile raggruppare i file che si stanno modificando in elenchi di modifiche e quindi quando si svn si esegue il commit, si specifica l'elenco delle modifiche - i file che non si trovano nell'elenco delle modifiche non sono interessati.

creare changelist
svn elenco modifiche matematica-fix integer.c mathops.c

commettono solo i file in elenco modifiche
svn ci -m "correggere un bug." --changelist matematica-fix

+0

Sembra molto lavoro, non voglio specificare i file che ho modificato, piuttosto i file che non dovrebbero essere commessi, forse ho capito che hai torto ... –

0

Il modo più semplice è quello di andare in qualsiasi directory che contiene il file config e impostare una proprietà su di esso:

svn: ignorano settings.php

rimarrà as- è attraverso tutti i commit e gli aggiornamenti. Il comando potrebbe essere simile a questo:

$ svn propset svn: ignora 'settings.php'./

+0

Ho appena provato questo. Ho fatto un checkout, ho messo su una svn ignora su un file usando svn propset svn: ignora 'readme' ./ e poi ha fatto un commit, ma il file readme è ancora impegnato quando viene cambiato. –

+2

svn: ignore non funziona su file già sotto controllo di versione – Muers

1

This answer parla della creazione di un elenco di modifiche denominato ignore-on-commit con il file modello, funzionerà solo se si utilizza TortoiseSVN.

Ma poi, di nuovo, questa è un'impostazione per utente.

+0

Si parla anche di "Creare uno script di hook pre-commit che rifiuta il commit quando viene aggiunta una proprietà specifica. È quindi possibile aggiungere questa proprietà ai file nel funzionamento copia per prevenire i commit ", nel caso non si usi Tortoise SVN – achecopar

Problemi correlati