Come ignorare i file in forno/mercuriale usando la tartaruga hg "che fanno parte del repository"

StackOverflow https://stackoverflow.com/questions/7351076

Domanda

Usiamo la tartaruga HG con il forno. Nel mio progetto VS 2010 C# ci sono alcuni file che fanno parte del repository, ma vorrei che HG tartaruga li ignorasse quando mi impegno. Per ad esempio, diciamo in una schermata di accesso che posso codificare l'utente, password per il test. Non voglio davvero questo file considerato durante un commit. Capisco il file .hgignore ma questo funziona davvero per i file che non fanno parte del repository. Qualsiasi trucco in tartaruga HG a Ignora i file che fanno parte del repository ? (Quindi non si presentano come modificato (m) durante un commit.) Grazie

È stato utile?

Soluzione

Uso sempre una combinazione di .hgignore e BeforeBuild (Nel file .csproj) per cose come questa.

In uno dei miei progetti per animali domestici, ho la seguente configurazione:

App.config Contiene il mio vero ID utente hardcoded e password per il test.
App.config.example è identico, ma con dati falsi come "Dummy_user" e "Dummy_PW".

App.config è non parte del repository, e è ignorato (in .hgignore).
App.config.example fa parte del repository.

Quindi, ho quanto segue nel BeforeBuild Target nel file .csproj della mia soluzione:

<Target Name="BeforeBuild">
  <Copy
    Condition="!Exists('App.config')"
    SourceFiles="App.config.example" 
    DestinationFiles="App.config"/>
</Target>

Tutto questo insieme ha il seguente effetto:

  • Il file di configurazione con i dati reali non può mai essere accidentalmente impegnato nel repository, perché viene ignorato
  • Il repository contiene solo il file di configurazione con i dati di esempio
  • Se qualcun altro clone il repository sulla sua macchina, non avrà il file di configurazione "reale" ... ma se manca, verrà creato automaticamente prima della prima build da Visual Studio / MSBuild semplicemente copiando il .example file (e poi può semplicemente mettere il suo Dati di accesso reali nei nuovi creati App.config file).
  • se uno App.config Con i dati dell'utente con codice rigido reale già esistono, non verranno sovrascritti durante la costruzione perché l'evento prima di essere accadrà solo se solo App.config fa non esistono già

Altri suggerimenti

La risposta di Christian è quella giusta, ma voglio menzionare che Tortoisehg supporta ciò che vuoi con il loro Auto Exclude List.

Un problema con un elenco di escludere è che non può funzionare con Merge: devi commettere tutti i file quando ti unisce e quindi dovrai fare un po 'di ballo con Shelve, Funge, commit e Unselve.

Quando si esegue un commit di Tortoisehg, c'è un elenco di file con caselle di controllo da loro. Deselezionare i file che non si desidera comod.

O, sulla riga di comando, fai un commit del modulo hg commit --exclude "pattern", dove il modello è definito nella pagina HG Man.

Potresti sempre usare Hg dimentica.

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