2014-12-01 3 views
1

В нашей компании, мы только начали использовать Mercurial и мы столкнулись со следующей проблемой:Untrack файлы без удаления из удаленного хранилища

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

Есть ли способ сказать Mercurial прекратить отслеживание этих файлов локально без внесения каких-либо изменений в файл в удаленном репозитории?

Мы попытались с hg forget <file>, но, как я понимаю, это приведет к удалению файла из удаленного хранилища.

Мы также попытались добавить эти файлы в файл .hgignore, но почему-то файлы на самом деле не игнорируются, я думаю, Mercurial делает это, потому что файлы уже отслеживаются.

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

Заранее благодарим за любую помощь.

EDIT: Хотя это не полностью исправить то, что мы хотели, принятый ответ - лучший подход. Наша проблема, вероятно, является результатом плохого дизайна.

ответ

3

Если файл, который вы хотите без изменений является, например, config.cfg, проверьте в config_template.cfg, забыть config.cfg если оно уже отслеживается, и добавить config.cfg в список игнорируемых. Затем правило построения может создать config.cfg из шаблона , если оно еще не существует.

пользователя будет иметь стартовую config.cfg, что они могут настроить без проверки его.

+0

Спасибо, это звучит как действительно хорошее решение. Я проверю, возможно ли это, потому что некоторые из этих файлов используются для развертывания, я должен быть уверен, что мы что-то не сломаем. –

1

Вы можете использовать раздел конфигурации [defaults] добавить некоторую «--exclude» опции для обычных команд (см моего ответа на Mercurial hg ignore does not work properly) Больше подробностей.

Но будьте осторожны, чтобы было опасно молча игнорировать изменения в файлах, а также что этот раздел [defaults] был отмечен как устаревший (он все еще присутствует в 2.9.2).

+0

Спасибо !, мы исключаем файлы из любой фиксации сейчас, но у нас все еще есть проблема при потяневании и обновлении, мы должны откладывать наши изменения и восстанавливать их после завершения обновления. –

1

IMHO это неправильный подход, чтобы иметь файл в репозитории, который каждый человек нуждается в изменении в любом случае - это указание, что вы не хотите, чтобы его отслеживали вообще.

Измените файл на config.sample, и при первом запуске ваша программа создаст конфигурацию по умолчанию (поэтому, когда нет существующего файла конфигурации), и каждый разработчик использует файл конфигурации, как ему нужно.

И я вижу ответ Марка Толнина только сейчас :)

Смежные вопросы