2010-03-05 5 views
3

У меня есть сайт с открытым исходным кодом. Некоторый контент является «приватным», например параметрами подключения, а также файлами, которые не нужны версии с открытым исходным кодом (например, шаблоны рекламы).Методы обработки частного и публичного хранилища?

По существу я пытаюсь поддерживать две версии:

  • общедоступный сайт, который имеет уникальный идентификатор (рекламу, счет Google Analytics, ссылка для связанного форума и так далее)
  • Открытая версия Источник для развития общин, без ненужных зависимостей или брендинга

в настоящее время я использую .gitignore файл, чтобы предотвратить «частное» содержание, чтобы быть прижаты к исходному reposito открытого гу. Наряду с помощником, который содержит шаблоны, найденные локально, но показывает пустое поле для версии с открытым исходным кодом.

Это работает достаточно хорошо, пока я не попытаюсь проверить между ветвями функций: ветке может понадобиться новый ключ в файле настроек. Поскольку файл настроек игнорируется Git (чтобы избежать нажатия паролей и т. Д.), Сайт разбивается.

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

Следует ли использовать ветви для управления различными версиями веб-сайта?

ответ

2

Вы должны использовать git submodules с:

  • один модуль для всех общедоступного содержания, которые могут быть сдвинуты/потянул по желанию
  • один модуль для частного содержания
  • один супер-проекта , также в частном репо, которое ссылается как на публичные, так и на частные подмодули.

Отрасли в пределах одного репо не являются ответом, особенно при работе с конфиденциальной информацией.

+0

Спасибо, это звучит так, как я должен был сделать, но я все еще слишком неопытен с Гит, и это звучит сейчас над моей головой. Как вы думаете, есть ли способ просто блокировать git push от копирования выбранных файлов на удаленный компьютер или просто блокировать любые нажатия? Мое приложение может легко игнорировать nopn-существующие файлы в версии с открытым исходным кодом, потому что он работает в другом режиме. Чтобы быть в состоянии, например, никогда не нажимать какой-либо «. *» Файл, это самый простой вариант. (Я думаю, это не имеет смысла, так как папка с открытым исходным кодом .git имела бы историю для не существующих файлов .. :() – 2010-03-06 21:23:05

+1

@faB: Вы могли бы предотвратить перехватывание перехватов на локальной или целевой стороне репо (некоторые 'git -receive-pack' в удаленном репозитории, см. также http://benjamin-meyer.blogspot.com/2008/10/git-hooks.html), но поскольку перехватчики не участвуют в операциях push/pull через разные удаленные repo (см. http://stackoverflow.com/questions/1717278/git-hooks-and-how-they-work), я всегда неохотно их использую (из-за всех дополнительных настроек, которые вам нужно сделать на репо) Поскольку подмодули легче контролировать, я предпочитаю это решение. – VonC

0

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