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