как игнорировать файлы в печи / 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.