Удалить файлы без удаления из удаленного хранилища

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: Хотя это не полностью исправить то, что мы хотели, принятый ответ является лучшим подходом. Наша проблема, вероятно, является результатом плохого дизайна.

3 ответа

Решение

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

После этого у пользователя будет начальный config.cfg, который он может настроить без регистрации.

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

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

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

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

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

Другие вопросы по тегам