Как разделить несколько проектов в один репозиторий с помощью git? - PullRequest
5 голосов
/ 12 ноября 2009

У меня есть 3 проекта, которые я хотел бы раскошелиться. Все они связаны друг с другом - изменение одного, скорее всего, потребует замены другого. Поскольку все они связаны, я хотел бы создать 1 репозиторий для вилок, сохраняя при этом возможность получать обновления с каждого оригинала.

Как мне настроить мой git-репозиторий?

Это предварительные мысли, поэтому я не удивлюсь, если это безумие / глупость. Это так?

Ответы [ 4 ]

5 голосов
/ 12 ноября 2009

Вас может заинтересовать функциональность git-submodule . Цитата здесь :

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

3 голосов
/ 12 ноября 2009

Вы всегда можете использовать "git remote add <name> <url>", чтобы добавить больше репозиториев в качестве источника.

2 голосов
/ 12 ноября 2009

Есть одна возможность, которую я никогда не пробовал "по-настоящему", но это может сработать.

Допустим, у вас есть три проекта с творческим названием Proj1 , Proj2 и (угадайте) Proj3 . Скажем также, что все или некоторые из них зависят от внешних библиотек, например одна называется Lib1.dll , а другая - SuperLib.dll .

.

Во-первых, для структуры папок я бы сделал что-то вроде:

MyCode\
    build_all.bat
    Docs\
        [...]
    Libs\
        Lib1.dll
        SuperLib.dll
    Proj1\
        [...]
    Proj2\
        [...]
    Proj3\
        [...]

Тогда вы создадите один репозиторий для каждой из папок ProjX:

cd \MyCode\Proj1
git init
cd \MyCode\Proj2
git init
cd \MyCode\Proj3
git init

Тогда вы бы создали хранилище для всего этого:

cd \MyCode
git init

Содержанием этого репозитория для git будет папка Libs и ее содержимое, сценарий сборки build_all.bat и 3 подпроекта.

Так что, как только вы измените свой исходный код, скажем, Proj1\Main.cs, вся вещь не увидит модификацию. Вам нужно было бы git commit на Proj1, а затем перейти к целиком и затем git commit к нему (теперь git сможет увидеть, что Proj1 был изменен).

При использовании этого метода история всего 1038 * будет просто указывать, когда ProjX был изменен, но он не будет напрямую отслеживать отдельные файлы. Однако, как и ожидалось, хранилище в ProjX будет отслеживать каждый файл, как обычно.

Если вы попробуете "настоящий проект", дайте мне знать результаты!

Удачи!

1 голос
/ 12 ноября 2009

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

А пока я все еще открыт для предложений.

...