как игнорировать файлы в печи / Mercurial, используя черепаху HG ", которые являются частью хранилища" - PullRequest
8 голосов
/ 08 сентября 2011

Мы используем черепаху HG с печью. В моем проекте c # 2010 c # есть некоторые файлы, которые являются частью репозитория, но я бы хотел, чтобы черепаха hg игнорировала их, когда я делаю коммит. Например, скажем, на экране входа в систему я могу жестко ввести идентификатор пользователя, пароль для тестирования. Я не хочу, чтобы этот файл рассматривался во время коммита. Я понимаю файл .hgignore, но это действительно работает для файлов, которые не являются частью репо. Любой трюк в hg черепахи, чтобы игнорировать файлы, которые являются частью репо ? (поэтому они не отображаются как измененные (M) во время коммита.) спасибо

Ответы [ 4 ]

17 голосов
/ 08 сентября 2011

Я всегда использую комбинацию .hgignore и BeforeBuild (в файле .csproj) для подобных вещей.

В одном из моих любимых проектов у меня есть следующая настройка:

App.config содержит мой реальный код пользователя и пароль для тестирования.
App.config.example идентичен, но с поддельными данными, такими как "dummy_user" и "dummy_pw".

App.config - это , а не часть хранилища, и игнорируется (в .hgignore).
App.config.example является частью хранилища.

Затем в цели BeforeBuild в файле .csproj моего решения есть следующее:

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

Все это вместе имеет следующий эффект:

  • файл конфигурации с реальными данными никогда не может быть случайно зафиксирован в хранилище, потому что он игнорируется
  • хранилище содержит только файл конфигурации с данными примера
  • если кто-то еще клонирует репозиторий на свою машину, у него не будет «реального» конфигурационного файла ... но если он отсутствует, он будет автоматически создан перед первой сборкой Visual Studio / MSBuild путем простого копирования .example файл (и тогда он может просто поместить свои данные реального входа в систему во вновь созданном App.config файле).
  • , если App.config с реальными жестко закодированными пользовательскими данными уже существует, он не будет перезаписан при сборке, поскольку событие BeforeBuild произойдет, только если App.config действительно не уже существует
4 голосов
/ 09 сентября 2011

Правильный ответ Кристиана, но я хочу отметить, что TortoiseHg поддерживает то, что вы хотите, с помощью их списка автоматического исключения .

Одна проблема со списком исключений состоит в том, что он не может работать со слияниями: вы должны фиксировать все файлы при слиянии, и поэтому вам придется немного потанцевать с полками, слиянием, фиксацией и небрежным.

1 голос
/ 08 сентября 2011

Когда вы делаете коммит TortoiseHG, появляется список файлов с флажками. Отмените выбор файлов, которые вы не хотите использовать.

Или в командной строке выполните коммит в форме hg commit --exclude "pattern", где шаблон определен на странице руководства hg.

0 голосов
/ 08 сентября 2011

Вы всегда можете использовать рт.ст. забыть .

...