Как игнорировать файлы в печи/ртути с использованием черепахи HG «которые являются частью репозитория»
-
28-10-2019 - |
Вопрос
Мы используем черепаху 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 забудь.