Удалить файлы без удаления из удаленного хранилища
В нашей компании мы только начали использовать 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, и ваша программа создаст конфигурацию по умолчанию при первом запуске (таким образом, когда нет никакого файла конфигурации), и пусть каждый разработчик использует файл конфигурации по мере необходимости.
И я вижу ответ Марка Толнена только сейчас:)