Подтвердить что ты не робот

Несколько проектов в одном репозитории git?

В настоящий момент я являюсь пользователем SVN и просматриваю перенос моих проектов на git.

Я использую один SVN-репозиторий для хранения всех проектов, которые я создаю. Моя структура выглядит примерно так:

/
    /group1
        /subgroup1
            /project1
                /branches
                    ...
                /tags
                    ...
                /trunk
                    ...
            /project2
                ...
        /subgroup2
            /project3
                ...
            /project4
                ...
    /group2
        /subgroup3
            ...
        /subgroup4
            ...
    /lib
        /lib1
        /lib2
        /lib3

Как вы можете видеть, я сохраняю свои проекты в группах, а /lib содержит библиотеки, совместно используемые между проектами.

Я выбрал эту структуру сортировки, потому что:

  • Подобная структура репо была использована в компании, где я научился использовать SVN.
  • Позволяет мне запустить svnserve как службу/демон на моей машине со всеми проектами, размещенными на нем (мне не нравится подход к файловой ссылке).

Теперь... в точку. Мне было интересно:

Как этот рабочий процесс будет работать, если я перейду к git?

В частности:

  • Было бы легко перенести дерево репо на git?
  • Предполагая, что для каждого проекта требуется отдельное репо *, как бы я мог обслуживать их всех (идеально сгруппированных аналогичным образом) через эквивалент svnserve git.

*) Я читал о git, и я понимаю, что это так, но я хотел дважды проверить с опытными людьми.

4b9b3361

Ответ 1

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

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

Обслуживание Git repos, используя smart-http, Git daemon и ssh довольно просто. Существует также Gitolite для управления несколькими репозиториями (включая авторизацию и аутентификацию). Прочтите связанную главу о ProGit при обслуживании Git repos- http://progit.org/book/ch4-2.html

Приступая к вашей группировке, вы можете поместить репозитории в папки в соответствии с вашей структурой группировки и использовать с помощью, например, метод smart http, в котором URL-адреса репо будут выглядеть так, как URL-адреса, которые вы использовали бы с SVN, будут все проекты похоже, находятся под группировкой и т.д.

Ответ 2

В дополнение к другим ответам вы также можете использовать GitSlave, чтобы связать несколько репозиторий git.

Ответ 3

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

Чтобы запустить сервер git, если вам нужен только один пользователь (вы), достаточно сервера с установленными git и ssh. См. Например в этой статье.