Как мне спрятать файл из одного удаленного репо в git? - PullRequest
1 голос
/ 12 декабря 2011

У меня есть проект, которым я хотел бы поделиться на github, который я настроил как еще одно удаленное репо.Но у меня есть некоторая конфиденциальная информация о конфигурации (данные учетной записи amazon s3), которую я не хочу явно передавать на github.

Есть ли способ заставить удаленные репозитории github игнорировать файл настроек,но работают ли с ним локальные и другие удаленные репозитории?

РЕДАКТИРОВАТЬ - повторно открыть этот вопрос, чтобы посмотреть, есть ли другие распределенные системы контроля версий (mercurial? bazaar? и т. д.), которые могут это сделать?

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

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

Идея состоит в том, что вы создаете версию файла с

username =
password =

но есть файл с локально заполненными значениями. Mercurial будет игнорировать значения при запуске hg status и hg diff, поскольку он показывает результаты после кодирования - фильтр кодирования удаляет конфиденциальную информацию.

Что-то вроде

[encode]
settings.cfg = sed "s/(username|password) = .*/\1 =/"

должно работать. (Я не могу проверить это сейчас, я в трамвае.)

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

1 голос
/ 12 декабря 2011

Вы можете ignore ваш файл настроек, но тогда он никогда не будет контролироваться версией.

Что мне делать, так это иметь 2 конфигурационных файла. Один для производства и один для разработчиков, которые содержат все настройки. Конфиденциальные учетные данные находятся в другом файле, "полученном" из основного конфига, и они не контролируются версией. Часто это просто две строки (имя пользователя, пароль).

Однако, как правило, нет способа отследить файл, но не нажать его.

0 голосов
/ 12 декабря 2011

Обычно вы можете сделать это, имея 2 файла конфигурации (+1, если вы хотите образец конфигурации):

config

username=root
password=r00t

config.local

username=tkone
password=yoursecretpassword

config.local.sample (необязательно, но рекомендуется)

username=replace with your local username and rename file to config.local
password=replace with your local password and rename file to config.local

.gitignore

config.local

В .gitignore вам нужно поместить файл config.local (тот, который вы хотите защитить) и отметьте configconfig.local.sample, если вы решитеиспользовать один).

Когда кто-то клонирует ваш проект, он увидит следующие файлы:

config
config.local.sample
.gitignore
all your other project files

Важно !!! Из вашей программы при загрузкеКонфигурационный файл, вы должны проверить, если у вас есть config.local файл.Если нет, загрузите файл по умолчанию: config .

Заключение

Вы избегаете публикации config.local, содержащей вашу конфиденциальную информацию.Конфигурация по умолчанию (клонированная с удаленного компьютера) будет работать в разумном и редком случае, когда допустимы имя пользователя root и пароль r00t.Config.local.sample предоставит локальные инструкции по настройке (если кому-то они нужны).

Если они действительно создадут файл config.local, он автоматически проигнорируется (из-за config.local строка из .gitignore), но она также автоматически получит для вашей программы вместо файла config по умолчанию.

...