So ignorieren Sie Dateien in Kiln/Mercurial mit Tortoise HG „, die Teil des Repositorys sind“.
-
28-10-2019 - |
Frage
Wir verwenden Tortoise Hg mit Ofen. In meinem VS 2010 C# -Projekt gibt es einige Dateien, die Teil des Repositorys sind, aber ich möchte, dass Tortoise HG sie ignoriert, wenn ich mich einschingst. Für z. B. in einem Login -Bildschirm kann ich das Benutzer -Passwort für das Testen harten. Ich möchte nicht, dass diese Datei während eines Commits berücksichtigt wird. Ich verstehe .Hgignore -Datei, aber dies funktioniert wirklich für Dateien, die nicht Teil des Repo sind. Jeder Trick in Tortoise Hg zu Ignorieren Sie Dateien, die Teil des Repo sind ? (Also tauchen sie während eines Commits nicht als modifiziert (m) auf.) Danke
Lösung
Ich verwende immer eine Kombination aus .hgignore und BeforeBuild
(in der .csproj -Datei) für solche Dinge.
In einem meiner Haustierprojekte habe ich das folgende Setup:
App.config
Enthält meine wirklich hartcodierte Benutzer -ID und mein Passwort zum Testen.
App.config.example
ist identisch, aber mit gefälschten Daten wie "dummy_user" und "dummy_pw".
App.config
ist nicht Teil des Repositorys, und Es ist ignoriert (in .hgignore
).
App.config.example
ist Teil des Repositorys.
Dann habe ich Folgendes in der BeforeBuild
Ziel in der .csproj -Datei meiner Lösung:
<Target Name="BeforeBuild">
<Copy
Condition="!Exists('App.config')"
SourceFiles="App.config.example"
DestinationFiles="App.config"/>
</Target>
All dies hat zusammen den folgenden Effekt:
- Die Konfigurationsdatei mit den realen Daten kann nie versehentlich für das Repository festgelegt werden, da sie ignoriert wird
- Das Repository enthält nur die Konfigurationsdatei mit den Beispieldaten
- Wenn jemand anderes das Repository in seine Maschine kloniert, wird er nicht über die "echte" Konfigurationsdatei verfügen ... aber wenn es fehlt, wird sie automatisch vor dem ersten Build von Visual Studio / MSBuild erstellt, indem er einfach kopiert wird
.example
Datei (und dann kann er einfach sagen seine Echte Anmeldedaten in die neu erstelltenApp.config
Datei). - wenn ein
App.config
Bei echten hartcodierten Benutzerdaten gibt es bereits beim Aufbau nicht überschrieben, da das Vorbauerereignis nur dann erfolgen wird, wennApp.config
tut nicht existieren bereits
Andere Tipps
Die Antwort von Christian ist die richtige, aber ich möchte erwähnen, dass TortoiseHg das unterstützt, was Sie mit ihren wollen Automatische Liste ausschließen.
Ein Problem mit einer ausschließlichen Liste ist, dass sie nicht mit Zusammenführungen funktionieren kann: Sie müssen alle Dateien begehen, wenn Sie zusammenarbeiten, und Sie müssen daher ein wenig mit Regalen, Zusammenführungen, Verpflichtungen und Unschöpfen tanzen.
Wenn Sie ein TortoiseHg -Commit machen, gibt es eine Liste von Dateien mit Kontrollkästchen von ihnen. Deaktivieren Sie die Dateien, die Sie nicht kombinieren möchten.
Oder in der Befehlszeile ein Verpflichtung für die Form hg commit --exclude "pattern"
, wo Muster auf der Seite HG Man definiert ist.
Sie könnten immer benutzen Hg vergessen.