Мы используем черепаху hg с Kiln. В моем проекте vs 2010 С# есть некоторые файлы, которые являются частью репозитория, но я хотел бы, чтобы черепаха hg игнорировала их, когда я делаю фиксацию. Например, скажем, на экране входа в систему я могу запрограммировать идентификатор пользователя, пароль для тестирования. Я действительно не хочу, чтобы этот файл рассматривался во время фиксации. Я понимаю файл .hgignore, но это действительно работает для файлов, которые не являются частью репо. Любой трюк в черепахе hg до игнорировать файлы, которые являются частью репо? (поэтому они не отображаются как измененные (M) во время фиксации.) thanks
Как игнорировать файлы в печи/ртути с использованием черепахи hg ", которые являются частью хранилища"
Ответ 1
Я всегда использую комбинацию .hgignore и BeforeBuild
(в файле .csproj) для таких вещей.
В одном из моих домашних проектов у меня есть следующая настройка:
App.config
содержит мой настоящий идентификатор жесткого кода и пароль для тестирования. App.config.example
идентичен, но с поддельными данными, такими как "dummy_user" и "dummy_pw".
App.config
не часть репозитория, и игнорируется (в .hgignore
). App.config.example
является частью репозитория.
Затем у меня есть следующее в BeforeBuild
target в файле .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
уже существует не
Ответ 2
Ответ от Christian является правильным, но я хочу упомянуть, что TortoiseHg поддерживает то, что вы хотите, с помощью Auto Exclude List.
Одна проблема с списком исключений заключается в том, что она не может работать слияниями: вы должны передавать все файлы, когда вы сливаетесь, и вам нужно будет немного потанцевать с полками, слиянием, фиксацией и отсутствием.
Ответ 3
Когда вы выполняете фиксацию TortoiseHG, есть список файлов с флажками. Отмените выбор файлов, которые вы не хотите.
Или, в командной строке, сделайте фиксацию формы hg commit --exclude "pattern"
, где шаблон определен на странице hg man.
Ответ 4
Вы всегда можете использовать hg забыть.