Как создать git-клон с ветвями «подпроекта»? - PullRequest
6 голосов
/ 28 января 2010

Вот ситуация: у нас есть огромный svn-репозиторий, который является «основным» (не может изменить это, потому что он на самом деле «принадлежит» другой компании). Мы бы предпочли работать локально в git, чтобы получить гибкость и скорость ветвления, которые предлагает git. Но мы не хотим клонировать весь репозиторий.

Структура хранилища выглядит примерно так:

/trunk/project1/*
      /project2/*
/branches/branch/project1/*
                /project2/*
/tags/tag1/tag1a/project1/*
          /tag1b/project1/*
     /tag2/tag2a/project2/*

Меня интересует только проект1, но мне бы хотелось иметь как ствол, так и ветви (теги не так важны, но было бы неплохо их тоже получить).

Я могу получить одну ветку, клонированную с этими настройками svn-remote:

[svn-remote "svn"]
    url = https://svn.company.com/svn/branches/branch1/project1

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

[svn-remote "svn"]
    ignore-paths=^project2|^project3|...

но мне придется обновлять ignore-paths каждый раз, когда добавляется новый каталог "project" верхнего уровня, который на самом деле не является устойчивым.

Во-вторых, нам действительно нужны только теги в / tags / tag1 (если нам вообще нужны теги). Будем благодарны за любые мысли о том, как это сделать.

1 Ответ

6 голосов
/ 04 февраля 2010

Я думаю, что следующее в вашем .git / config файле должно работать:

[svn-remote "svn"]
  url = https://svn.company.com/svn
  trunk = trunk/project1:refs/remotes/svn/trunk
  tags = tags/*/project1:refs/remotes/svn/tags/*
  branches = branches/*/project1:refs/remotes/svn/branches/*

Я основал это на разделе конфигурации справочной страницы git-svn

...