Я решаю это следующим образом: я переименовываю файл x
в x-default
и устанавливаю git, чтобы игнорировать файл x
(например, .gitignore
в директории y
). Каждый пользователь, который выписывает репо, должен скопировать извлеченный файл x-default
в x
и установить его значения.
Это имеет то преимущество, что файл x-default
может быть без проблем обновлен новыми значениями (без перезаписи конфигурации пользователя), а из-за того, что x
игнорируется, значения пользователя не синхронизируются с репозиториями других пользователей ( как хочешь).
Ваша программа должна проверить наличие x
и, если его там нет, дать подсказку скопировать x-default
в x
и настроить его (или сделать это автоматически).
Редактировать
Это работает, но я верю, что это можно сделать чище.
Зависит от того, что вы хотите. Вы также можете использовать это в своем локальном репо:
git update-index --assume-unchanged x
Таким образом, вы фиксируете файл один раз, а затем запускаете команду для файла, если не хотите, чтобы дальнейшие изменения были зафиксированы. Проблема здесь в том, что другим пользователям придется сделать то же самое один раз, если они захотят сделать это так же, как вы, иначе их изменения будут зафиксированы (и перезапишут ваши, или это приведет к конфликту слияния).
Чтобы отменить это, просто зайдите
git update-index --no-assume-unchanged x
Я не знаю другого решения, но, возможно, кто-то другой.
Редактировать
П.С .: Я считаю, что этот проект на github действительно делает то, что я хочу
Это больше похоже на мой первый ответ! У них есть файл example_keys_file.js
, а в файле .gitignore
они игнорируют keys_file.js
.