как игнорировать файлы в печи / mercurial с помощью tortoise hg", которые являются частью репозитория"

мы используем HG черепахи с печью. В моем проекте vs 2010 c# есть некоторые файлы, которые являются частью репозитория, но я хотел бы, чтобы tortoise hg игнорировал их, когда я делаю фиксацию. Для EG., скажем, на экране входа в систему я могу жесткий код userid, пароль для тестирования. Я действительно не хочу, чтобы этот файл рассматривался во время фиксации. Я понимаю.hgignore файл, но это действительно работает для файлов, которые не являются частью РЕПО. Любой трюк в черепахе hg игнорировать файлы, которые являются частью РЕПО ? (таким образом, они не отображаются как измененные (M) во время фиксации.) спасибо

4 ответов


я всегда использую сочетание .hgignore and BeforeBuild (in the .csproj file) для таких вещей.

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

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, просто скопировав (и тогда он может просто поставить его реальные данные для входа во вновь созданный ).
  • если App.config с реальными жестко закодированными пользовательскими данными уже существует, он не будет перезаписан при построении, потому что событие BeforeBuild произойдет только если App.config тут не уже существуют

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

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


когда вы делаете фиксацию TortoiseHG, есть список файлов с флажками по ним. Снимите файлов, которые вы не хотите поручено.

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


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