Как использовать Git для синхронизации нескольких проектов? - PullRequest
3 голосов
/ 23 марта 2012

У меня есть структура каталогов, подобная следующей:

|-- ROOT
    |-- Project1
    |   |-- application
    |   |-- img
    |   |-- js
    |   |-- css
    |   `-- system
    |
    |-- Project2
    |   |-- application
    |   |-- img
    |   |-- js
    |   |-- css
    |   `-- system
    |-- Project3
    ....

Корневая папка содержит всего x проектов: "Project1", "Project2", "Project3" и т. Д.

Теперь яЯ хотел бы использовать git для "system", "css" и "js".Эти папки должны быть идентичны для каждого проекта.Так как же синхронизировать все проекты с git?

Я предполагаю создать «Мастер-проект», добавить туда новые модификации и вытащить новую версию для всех других проектов.Но это боль в a ** ..

. Мне хотелось бы запустить какой-нибудь командный / пакетный файл для одновременной синхронизации.Например, если у меня есть 6 проектов, и я что-то изменяю в проекте 1, как я могу быстро получить эту модификацию для всех проектов (вместо того, чтобы нажать Project1 в «Master» и потянуть его 5 раз)?

Возможно ли это?

Просто для записи, я работаю на компьютере с Windows.

Предыдущий вопрос: Git между несколькими проектами

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Вы все еще, вероятно, хотите использовать подмодуль. Смотрите эту страницу в git book .

Использование подмодулей упрощает обработку типов изменений, о которых вы говорите. См. Вторую половину этого ответа , который хорошо описывает процесс.

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

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

2 голосов
/ 23 марта 2012

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

Написание bash-скрипта, который делает это рекурсивно для каждой папки, являющейся git-проектом или подмодулем, должно быть довольно простым. может быть что-то вроде:

find -name css -type d -execdir git pull origin master ;

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