2011-01-12 7 views
5

La mia squadra sta passando a Mercurial. Tutti i nostri progetti hanno un file di configurazione (web.config o app.config, e anche alcuni file bat - siamo un negozio C#). Questi file devono essere parte del repository. Quando uno sviluppatore clona il repository, sono necessarie modifiche locali ai propri file di configurazione per farlo funzionare. Ad esempio, il file di configurazione di un progetto potrebbe richiedere una stringa di connessione al database dello sviluppatore o altre informazioni specifiche dell'ambiente. Non vogliamo che queste modifiche finiscano nel repository. E di tanto in tanto apportiamo modifiche a queste configurazioni che devono entrare nel repository e distribuite al team e alla fine al cliente.Come configurare Mercurial per non commettere file di configurazione specifici?

Qual è il modo più semplice per noi di configurare o utilizzare Mercurial in modo che questi file non vengano commessi per errore? Mi piacerebbe essere costretto a fare un commit esplicito di tali file, ma le fusioni dal repository verrebbero automaticamente riportate negli aggiornamenti.

Questo deve essere un problema che qualcuno ha affrontato, ma come principianti Mercurial siamo tutti in perdita per la soluzione migliore.

Edit:

Una domanda simile che potrebbe condividere alcune soluzioni comuni, ma non è la stessa di questa domanda, sono disponibili all'indirizzo: Conditional Mercurial Ignore File

includo questo nel caso in cui altra domanda potrebbe fornire la risposta che stai cercando.

+0

possibile duplicato di [Conditional Mercurial Ignore File] (http://stackoverflow.com/questions/4502108/conditional-mercurial-ignore-file) –

+0

Se si leggono le due domande, non sono uguali . Sono domande diverse che potrebbero condividere alcune soluzioni comuni. Ho intenzione di andare avanti e modificare la mia domanda per indicare l'altra domanda come una domanda correlata. –

+0

Duplicato di [Mercurial Workflow Question - Come gestire i file di configurazione] (http://stackoverflow.com/questions/1378953/mercurial-workflow-question-how-to-handle-config-files). La soluzione sembra molto diversa però. –

risposta

6

Il modo tipico per gestirli è archiviare i modelli per i file di configurazione nel repository e aggiungere i file di configurazione effettivi all'elenco di ignora in Mercurial.

In questo modo, sono disponibili in ogni momento copie intatte, non modificate, di ogni file di configurazione, anche per i nuovi sviluppatori che clonano da zero, ma per rendere utilizzabili i file di configurazione, è necessario creare una copia locale di al nome del file di configurazione effettivo e modificare il file. Puoi anche utilizzare programmi di confronto/unione, come Beyond Compare, per confrontare una nuova versione del file modello con la tua copia locale di una versione precedente, per vedere cosa è cambiato e aggiungere i bit mancanti.

Se è necessario evitare di impegnare i file di configurazione effettivi, è necessario un hook pre-commit o pre-push.

+0

Mi è piaciuta la tua idea e l'ho svalutata. Ne abbiamo discusso, ma abbiamo trovato una soluzione diversa. Grazie per la risposta. Ci ha dato un'altra opzione da considerare. –

+0

E intendi che avrai un progetto non compilato? – Restuta

1

Nel file .hg/hgrc fare questo:

[defaults] 
commit = -X Projectname/web.config 

(assumendo "ProjectName" è il progetto di subdir)


Edit:

Inoltre, se si sta utilizzando Tortoise HG - aggiungi anche questo:

[tortoisehg] 
ciexclude = Projectname/Web.config,Projectname/App_Data/DBFile.mdf 

(dal modo in cui mente la barra AVANTI nel percorso di cartella! Anche su Windows!)