Использование github для размещения общедоступных репозиториев git, при этом сохраняя конфиденциальные файлы данных без изменений - PullRequest
15 голосов
/ 12 февраля 2010

Мое приложение размещено на Heroku, и у меня также есть общедоступное репозиторий github.

В моем приложении есть файл конфигурации, содержащий мои учетные данные amazon S3. Важно убедиться, что файл загружен в heroku, а не в github.

Так что я подумал, что я могу перенести свою главную ветку на heroku и создать отдельную ветку github и убедиться, что ее файл .gitignore ссылается на мой файл s3.yml. Затем я мог бы просто сделать «git push origin github: master», чтобы переместить ветку github на github.com

Это прекрасно работает для первого коммита.

Но затем я переключаюсь на свою основную ветку, пишу какой-то потрясающий код, а затем отправляю все это в heroku. Затем я снова переключаюсь на свою ветку github и выполняю команду «git merge master», чтобы новый код добавлялся к нему. Но это приводит к тому, что файлы s3.yml и gitignore из главной ветки копируются в ветку github. Cue стук с головы до стола.

Есть ли какой-либо совет о том, как синхронизировать ветки и обеспечить, чтобы неотслеживаемые файлы оставались незамеченными. Могу ли я сказать git не объединять нежелательный файл S3.yml и другой файл .gitignore?

Я порчу здесь мертвую лошадь? Я пока не могу оправдать оплату частного аккаунта на github, но я думаю, что ответ будет заключаться в том, чтобы сделать именно это ... или переключиться на проектировщик

Я надеюсь, что эта проблема связана только с моими навыками дерьмовых мерзавцев и что есть способ ... заранее спасибо

РЕДАКТИРОВАТЬ ::: Принятый ответ - отличное решение, но я только что нашел новое, которое мне нравится гораздо больше. Прочитайте об этом здесь: http://docs.heroku.com/config-vars - у этих умных людей в Heroku есть ответ на все ... серьезно удивительный

Ответы [ 4 ]

10 голосов
/ 12 февраля 2010

Но это приводит к тому, что файлы s3.yml и gitignore из главной ветки копируются в ветку github

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

См. Как мне сказать git всегда выбирать мою локальную версию для конфликтующих слияний в конкретном файле?

2 голосов
/ 12 февраля 2010

в SVN это называется «игнорированием файлов», поэтому я предполагаю, что это будет что-то похожее в GIT - я не использую GIT, поэтому не цитируйте меня по этому поводу, но я нашел эту ссылку на сайте GITHub:

http://github.com/guides/ignore-for-git

Надеюсь, что помогает

1 голос
/ 12 февраля 2010

Вы можете полностью удалить «опасные» файлы из git - например, поместить их в ~ / .yourapp или что-то в этом роде. (это на самом деле не дает прямого ответа на вопрос, но то, что делает много программного обеспечения - .fetchmail, .ssh, ...) и позволит другим пользователям делать то же самое.

0 голосов
/ 12 февраля 2010

Если вы используете ветку с именем heroku в качестве ветки «альтернативный мастер» (с конфиденциальными данными) и старую ветку master без конфиденциальных данных, то вы всегда можете сделать

git merge master

Так что вы можете нажатьВетка геройку, к герою не ветка мастерская.

...