Как игнорировать файлы в печи/ртути с использованием черепахи HG «которые являются частью репозитория»

StackOverflow https://stackoverflow.com/questions/7351076

Вопрос

Мы используем черепаху HG с печи. В моем проекте VS 2010 C# есть некоторые файлы, которые являются частью репозитория, но я хотел бы, чтобы Tortoise HG игнорировала их, когда я делаю коммит. Например, скажем, на экране входа в систему я могу жестко код идут пользователь, пароль для тестирования. Я действительно не хочу, чтобы этот файл был рассмотрен во время коммита. Я понимаю .Hgignore File, но это действительно работает для файлов, которые не являются частью репо. Любой трюк в черепахе hg Игнорировать файлы, которые являются частью репо ? (Таким образом, они не отображаются как модифицированные (м) во время коммита.) Спасибо

Это было полезно?

Решение

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

Другие советы

Ответ Кристиана - правильный, но я хочу упомянуть, что Tortoisehg поддерживает то, что вы хотите с их Auto исключить список.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top