Несколько проектов в одном git-репо? - PullRequest
21 голосов
/ 12 августа 2011

Я сейчас пользователь SVN и смотрю на перевод своих проектов в git.

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

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

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

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

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

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

Как бы работали такого рода рабочие процессы, если бы я перешел на git?

В частности:

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

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

Ответы [ 3 ]

29 голосов
/ 12 августа 2011

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

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

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

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

5 голосов
/ 12 августа 2011

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

1 голос
/ 12 августа 2011

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

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

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