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

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

Ответ 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 забыть.