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.]

È stato utile?

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

  1. escludilo dal repository con svn: ignore (dovrai prima eliminarlo dal repository)
  2. conserva una copia in config.conf.default con valori segnaposto. È possibile conservare la copia predefinita nel repository.
  3. 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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top