Что не так с этим пользователем игнорировать файл для Mercurial?
Небольшая ретроспектива теперь, когда я обосновался в Mercurial. Забудьте забыть файлы в сочетании с hg remove
, Это безумие и басы. Ты можешь использовать hg remove
как только вы установили, что что-то находится в файле забывания, который не забывается, потому что рассматриваемый элемент отслеживался до создания исходного репо. Обратите внимание, что hg remove
эффективно очищает отслеживаемое состояние, но также планирует удаление файла из всего, что получает изменения из вашего репо. Если игнорируется, однако, деактивация отслеживания все еще происходит, но этот набор изменений delete-me никогда не достигнет другого репо и по какой-то причине никогда не удалит в вашем, IMO которого нелогично. Это очень верный признак того, что кто-то, а я не знаю этих ребят, не желает идти на компромисс по поводу проблем с дизайном. Важно понять, что Mercurial не определяет, что важно. За исключением случаев, когда вы, конечно, объединяетесь. Это вполне разумно тогда. Но я отвлекся...
Ignore-file / remove - хорошая комбинация для уже отслеженных, но очень специфических файлов, о которых вы хотите забыть, но если вы имеете дело с большим количеством встроенных файлов, определенных по более широким шаблонам, риск не стоит. Просто зайдите с двойным репо и pull -u
из удаленного репо в синхронизирующий репо, а затем pull -u
коммиты из вашего рабочего репо и слияние в репо, единственная цель которого - объединить изменения и передать их в место, где ваши не совсем отслеженные или неотслеживаемые файлы (поведение отличается при извлечении, а не при нажатии, конечно, потому что, эй, зачем быть последовательным?) не вызовет разочарования. Доверьтесь мне. Идея о том, что у вас должно быть два репозитория, чтобы просто обидеться по уважительной причине и что многие из нас так делают, должна натолкнуть вас на серьезную проблему!@#$, Но это гораздо менее болезненно, чем все остальные. ужасные вещи, которые заставят вас сожалеть о поисках разумной альтернативы.
И использовать hg help
, На самом деле это лучшая функция Mercurial, и зачастую она лучше, чем Интернет (что я не виню за путаницу по поводу всего сущего), для получения ответов на все, что сбивает с толку и противоречит интуиции в этой VCS.
/ ретроспективный
# switch to regexp syntax.
syntax: regexp
#Config Files
#.Net
^somecompany\.Net[\\/]MasterSolution[\\/]SomeSolution[\\/]SomeApp[\\/]app\.config
^somecompany\.Net[\\/]MasterSolution[\\/]SomeSolution[\\/]SomeApp_test[\\/]App\.config
#and more of the same following
И в моем mercurial.ini в корне моего каталога пользователя
[ui]
username = ereppen
merge = bcomp
ignore = C:\<path to user ignore file>\.hgignore-config
Контекст:
Я написал утилиту автоматической настройки в узле. Я просто хочу, чтобы изменения в файлах, которые он изменяет, игнорировались. У нас есть две команды, и обе они не находятся на одной странице, чтобы сделать это универсальным, так что пока это должно быть ориентировано на пользователя.
Конфигурационный файл на месте и указан моим INI-файлом. Я клонирую Я запускаю утилиту config и изменяю файлы, а stat показывает список каждого отдельного файла с буквой M рядом с ним. Я думал, что это была вещь utf-8 и явно установил файл в utf-16 little endian. Я не думаю, что делаю с regEx, что любой современный вариант regEx, стоящий вызова regEx, не поддержит.
1 ответ
.hgignore
файл не влияет на файлы, которые отслеживаются. Его функция заключается в том, чтобы вы не видели файлы, которые вы хотите игнорировать, в списке как "неотслеживаемые". Если вы видите "M", то они уже добавлены (вы получили их с клоном), поэтому .hgignore
ничего не делает.
Обычный способ обработки файлов конфигурации, которые различаются в зависимости от компьютера, заключается в app.config.sample
в управлении источниками, есть app.config
в .hgignore
и пусть люди делают копию, когда они делают свои изменения конфигурации.
С другой стороны, если ваши конфигурационные файлы позволяют включать и переопределять, вы заканчиваете их include app-local.config
и переопределить любые настройки в app-local.config
который вы не добавляете и не включаете в .hgignore
,