Come ignorare i file in forno/mercuriale usando la tartaruga hg "che fanno parte del repository"
-
28-10-2019 - |
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
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 creatiApp.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 soloApp.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.