включайте файл только один раз в репозиторий git - PullRequest
3 голосов
/ 01 февраля 2011

У меня есть этот файл.скажем x для этого примера внутри папки y.Я хочу поместить заглушку в каталог (PS: я считаю, этот проект github фактически делает то, что я хочу), но только один раз.Для этого примера это выглядит следующим образом:

module.exports.id = "";
module.exports.secret = "";
module.exports.callback = "";

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

КогдаЯ снова изменяю x, изменения не должны быть помещены в репозиторий git, а только внутри каталога y.

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

Ответы [ 2 ]

5 голосов
/ 01 февраля 2011

Я решаю это следующим образом: я переименовываю файл 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.

2 голосов
/ 01 февраля 2011

Стандартный подход к этой проблеме:

  1. Поместите template.ext.in в свой репозиторий
  2. Сделайте свой make-файл / скрипт / вручную скопируйте template.ext.in в template.ext и изменитезначения
  3. добавить template.ext к вашему .gitignore, чтобы гарантировать, что он никогда не будет зафиксирован.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...