SVN: Come posso mantenere il mio file config.blah locale?
Domanda
Sul server SVN, esiste un file chiamato config.conf
. Ho una versione locale chiamata la stessa cosa (nello stesso posto). Come posso assicurarmi che la mia configurazione locale non venga sovrascritta o archiviata?
Mentre sono qui, la risposta è diversa per una directory?
Sto usando Tortoise SVN, ma le risposte dalla riga di comando sono interessanti.
Grazie!
[Mi dispiace se questa domanda di base è stata posta prima ... Ho guardato ma non l'ho trovata.]
Soluzione
SVN penserà sempre che quel file fa parte del repository se lo nominate lo stesso e lo incollate nella stessa directory. Le tue opzioni sono
- Rinominalo (forse scrivi uno script di shell in
mv config.conf config.conf.theirs & amp; mv config.conf.mine config.conf
e quindi esegui la tua app) - Sposta. Forse aggiungi un po 'di logica alla tua app che controlla config.conf in una directory locale specifica dell'utente e quindi utilizza il config.conf predefinito se non ne viene trovato nessuno
Altri suggerimenti
TortoiseSVN ha una buona risposta per metà di questo problema: ignora su commit
Ciò ti impedisce di commettere accidentalmente " solo locale " cambia, ma non risolve il problema relativo all'aggiornamento accidentale di un file modificato localmente.
Dai un'occhiata a questo post sul blog per informazioni dettagliate su come:
http: //blog.baljeetsingh. net / 2009/02 / Tips-trucchi-svn-ignore-on-commit.html
- escludilo dal repository con svn: ignore (dovrai prima eliminarlo dal repository)
- conserva una copia in config.conf.default con valori segnaposto. È possibile conservare la copia predefinita nel repository.
- usa config.conf come di consueto - Subversion non lo vedrà più
Grazie a tutti. Pensavo che Eoin potesse essere pazzo, ma in realtà è vero. Non è possibile ignorare un file che si trova nel controllo versione.
Secondo i documenti di Tortoise
Ignora elementi con versione
I file e le cartelle con versione non possono mai essere ignorato - questa è una caratteristica di Sovversione. Se hai aggiornato un file con errore, leggi la sezione chiamata “Ignora i file che sono già versioned "per istruzioni su come "Annullamento" esso.
E dai documenti SVN
Ho un file nel mio progetto che ogni lo sviluppatore deve cambiare, ma io no vuoi che quelle mod locali siano mai commesso. Come posso fare 'svn commit' ignorare il file?
La risposta è: non mettere quel file sotto controllo di versione. Invece, metti a modello del file in versione control, qualcosa come " file.tmpl " ;.
Quindi, dopo l'iniziale 'svn checkout ", chiedi ai tuoi utenti (o ai tuoi build system) eseguire una normale copia del sistema operativo di il modello con il nome file corretto, e chiedere agli utenti di personalizzare la copia. Il il file non è verificato, quindi non lo sarà mai essere impegnati. E se lo desideri, puoi farlo aggiungi il file alla sua directory principale svn: ignora la proprietà, quindi non lo fa si presenta come '?' nello "stato svn" comando.
Questo è terribilmente fastidioso ... Immagino che dovrò solo fare attenzione a quel file e fare una copia di backup della mia configurazione (che posso ignorare).
Grazie a tutti per le risposte.
Puoi aggiungere un attributo svn-ignore: alla tua cartella locale che esclude config.conf o anche * .conf
Ma credo che dovresti escludere completamente questo file da SVN, ovvero se è già stato archiviato nel repository, dovrai prima eliminarlo dal repository
Ignorare il file dovrebbe aiutarti:
http://tortoisesvn.net/docs/release/TortoiseSVN_en /tsvn-dug-ignore.html
Quando c'è una sovversione con i file di configurazione, ho trovato molto utile avere un intero trunk dedicato ad esso. Perché? Soprattutto perché puoi semplicemente avere due copie del repository locale, una per usi locali, una per cambi remoti.
In questo modo:
/ workdir / configuration [è un collegamento a / workdir / conf_local]
/ workdir / conf_local [mantiene aggiornato local conf ma non sostituisce le mie impostazioni]
/ workdir / conf_remote [sempre aggiornato con dati remoti, quindi posso eseguire il commit delle modifiche]
Non so che tipo di installazione hai, o se questo è applicabile a qualunque lingua tu stia usando, ma questo è il modo in cui lo faccio con siti Web e PHP.
Innanzitutto, crei la configurazione predefinita, che probabilmente ha valori ingenui che non funzioneranno per il 90% delle configurazioni, ma ti fornisce un riferimento per quali valori ci sono e cosa può essere effettivamente configurato. Questo script di solito si chiama ' config.default.php
' o qualcosa di simile. Nella parte inferiore di questo script c'è qualcosa sulla melodia di:
if (file_exists("config.php")) require "config.php";
Logica semplice. Se è presente un override utente per il file di configurazione, caricalo e lascialo eseguire l'override di tutto ciò che è necessario. Quindi tieni semplicemente questo file di configurazione utente ignorato tramite i metodi già spiegati su tutte le macchine di sviluppo e tutte le macchine di produzione che mantengono un checkout svn per qualsiasi motivo. Questa è una configurazione molto flessibile e procedure simili potrebbero essere configurate per la maggior parte delle lingue / ambienti.
come ha sottolineato Scrappydog
È possibile utilizzare / creare elenchi diversi nella finestra di dialogo di commit
supporta l'elenco ignora-on-commit , in questo modo i file in questo elenco non saranno visibili ..
puoi fare riferimento a questo link al blog per i dettagli.
http: //blog.baljeetsingh .net / 2009/02 / Tips-trucchi-svn-ignore-on-commit.html