So ignorieren Sie Dateien in Kiln/Mercurial mit Tortoise HG „, die Teil des Repositorys sind“.

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

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

War es hilfreich?

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 erstellten App.config Datei).
  • wenn ein App.config Bei echten hartcodierten Benutzerdaten gibt es bereits beim Aufbau nicht überschrieben, da das Vorbauerereignis nur dann erfolgen wird, wenn App.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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top