2010-11-09 16 views
9

Ho un progetto in un repository. Presto la gente comincerà a controllarla, a lavorarci su, quindi a riprendere le modifiche. Ma c'è un file all'interno di quel progetto (un elaborato file di configurazione del mio progetto) di cui ognuno deve semplicemente avere una copia, ma apporteranno delle modifiche che non dovrebbero mai essere ricontrollate (che non dovrebbero mai essere inviate tramite aggiornamento al repository).svn ignora un file ma lo include nel checkout

Quindi, voglio che ogni utente che controlla il progetto per ricevere questo file di configurazione, ma poi voglio che ignorato su tutti i commit.

Quello che ho letto finora mi fa sentire che questo non sarà possibile. Sembra che una volta che ho importato il progetto con questo file di configurazione è sotto controllo di versione e non c'è più modo di ignorarlo oltre a rimuoverlo.

Spero di aver appena frainteso e la soluzione è facile.

Qualcuno può aiutare?

Oh, ho bisogno di una soluzione a linea di comando, se possibile. Gran parte del lavoro viene svolto su box linux headless con connessioni ssh-only.

Grazie!

EDIT: Sono andato con la risposta di cdhowie. Oltre a creare un file di configurazione del modello (ad esempio app.config.template) come suggerisce, uso anche "svn propedit svn: ignore" per avere il nome del file di configurazione reale (ad esempio app.config) ignorato sui commit.

risposta

11

Di solito il modo in cui lo si fa è fornire un file modello che l'utente o uno script copierà al suo posto. Quel file verrà quindi ignorato.

Ad esempio, supponiamo di avere app.config come file di configurazione. Dovresti impegnarti come app.config.template o qualcosa di simile. Gli utenti dovrebbero copiare e rinominare il file per iniziare lo sviluppo. app.config verrebbe ignorato in SVN.

Questo non funziona in modo pulito per gli aggiornamenti, ma è il meglio che si possa ottenere. Un'altra opzione potrebbe essere quella di impostare le restrizioni di accesso nel repository in modo che app.config non possa essere modificato da nessun altro.

EDIT: ho detto che questo non funziona in modo pulito per gli aggiornamenti, ma ripensandoci, se gli sviluppatori stanno cambiando questo file molto in ogni caso, che probabilmente non vogliono gli aggiornamenti da voi clobbering le proprie impostazioni. L'utilizzo di un file modello sarà in realtà più semplice per gli sviluppatori, poiché è possibile scegliere quali modifiche si uniscono in se stesse.

+0

Grazie a entrambi. Quindi quello che sto ottenendo da queste risposte è che il file ignorato dovrà essere creato da qualche meccanismo al di fuori di svn DOPO il checkout, e semplicemente non può essere nel repository con il suo "vero nome", o sarà commesso dagli sviluppatori . –

+1

A meno che non si aggiungano restrizioni di controllo dell'accesso, sì. E se aggiungete delle restrizioni, probabilmente ai vostri sviluppatori non piacerebbe rifiutare l'intero checkin perché hanno lasciato per sbaglio quel file selezionato. – cdhowie

+0

@ John: Esattamente. – SLaks

2

È possibile modificare il progetto per creare una versione preimpostata del file, se non esiste.

Il file non sarà quindi in SVN e ogni client otterrà la prima volta che eseguirà il codice.

La fattibilità di questo dipende dal modo in cui il progetto funziona e da dove è possibile inserire il codice eseguibile.

3

In realtà ci sono due approcci per "ignorare" i commit su un file con versione. La soluzione "modello" è già stata menzionata da @cdhowie. Il secondo approccio utilizza elenchi di modifiche come descritto nel post this.

svn changelist ignore-on-commit file-you-want-to-add