Как изменить репозиторий git для добавления подмодулей во ВСЕХ прошлых ревизий? - PullRequest
2 голосов
/ 21 июля 2010

Я успешно перенес свой SVN-репозиторий с тегами в Git, используя git svn-clone. Однако git svn-clone не переносит svn:externals. Поэтому я решил изменить дерево веток, используя git filter-branch.

Для svn:externals сначала я создал отдельный репозиторий Git для каждого svn: externals, а затем попытался использовать следующее, но это не сработало.

$ git filter-branch --tree-filter "git submodule add git@github.com:myAcc/mySubmodule.git mySubmodule" HEAD
Rewrite a013a219e4294d4ee66b323cf1db9c170d90130a (1/4)fatal: working tree '.' already exists.
Clone of 'git@github.com:myAcc/mySubmodule.git' into submodule path 'common' failed
tree filter failed: git submodule add git@github.com:myAcc/mySubmodule.git mySubmodule
rm: cannot remove `c:/myRepo/.git-rewrite/revs': Permission denied
rm: cannot remove directory `c:/myRepo/.git-rewrite': Directory not empty

Есть идеи, как этого добиться? Заранее большое спасибо.

1 Ответ

1 голос
/ 21 июля 2010

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

  1. Создать временный пустой репозиторий git
  2. Добавьте ваши svn:external s к нему как подмодули и выполните коммит; обратите внимание на имя SHA этого коммита
  3. Зайди в свой старый репозиторий
  4. git fetch из временного хранилища
  5. git rebase <SHA of the only commit in the temporary repository>
...