Git: дифференциация «суб-проекта» в веб-среде Stage, Live, Development - PullRequest
0 голосов
/ 10 января 2011

У меня есть сложный шаблон веб-проекта, в котором файлы можно разделить на три категории.Во-первых, файлы, связанные с настройками, которые должны быть уникальными на каждом сервере, обновляются не часто, но было бы неплохо иметь их в управлении версиями.Во-вторых, файлы разработки, которые являются фактическими файлами, закодированными разработчиками, и являются уникальными для каждого проекта и являются основными файлами для контроля версий.И, наконец, пользовательский контент, который в основном будет тестовыми данными в среде Stage и Development, но должен иметь правильные данные на живом сервере и в идеале также должен контролироваться версией.

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

Что я пробовал:

Я не могу использовать всю папку, так как в этом случае у меня будет один и тот же пользовательский контент в локальном эфире и на сцене, и мне придется перенастраивать файлы настроек каждый раз, когда я нажимаю с локального наstage и from stage to live.

Я попытался использовать основную ветвь для файлов разработки и отдельную ветвь для созданного пользователем содержимого и файлов настроек, а затем просто перенести мастер из локальной в стадию,и т. д. Но когда я делаю оформление заказа на сцене, он удаляет несвязанные файлы.

Я пробовал маРазделяйте отдельные ветви для разработки, пользовательского контента и настроек, а затем, после перехода на стадию, просто объединяете все в мастер.Проблема в этом случае возникает на локальном сервере dev, где процесс фиксации становится слегка запутанным: checkout dev;добавить измененные файлы;совершить dev;кассовый мастер;объединить настройки dev ugc.Я также беспокоюсь, что в этом случае некоторые из отслеживаемых UGC-файлов будут потеряны.

Большой вопрос

Может кто-нибудь предложить новое решение или что-то добавить?к текущим решениям, чтобы сделать их возможными?К сожалению, я не могу использовать отдельные папки, поскольку используемая среда (частная) не позволяет.

1 Ответ

0 голосов
/ 10 января 2011

Хотя это действительно ужасный способ организации вещей, вы можете использовать вложенные репозитории Git с .gitignore файлами, которые игнорируют все, что не принадлежит данному репозиторию:

.git/
.gitignore   <---- ignoring everything except settings-file
your_project
  .git/
  .gitignore <---- ignoring settings-file, user content, and user-content/.git
  dev-folder-1/
  dev-folder-2/
  settings-file
  user-content/
    .git/
    .gitignore <-- ignoring everything except user content

Это фактически позволит вам иметь 3 разных «перекрывающихся» репозитория, которые отслеживают разные части структуры файла.

Но на самом деле было бы лучше просто найти способ реорганизации ваших файлов и / или потребностей в управлении версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...