Как удалить удаленный источник из имени ветки после конвертации из svn в git - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь преобразовать svn-репозиторий в git, и я в основном выполнил то, что мне нужно, выполнив следующее:

git svn init https://svn.server.com/repos/my_repo --stdlayout
git svn fetch

Я также нашел способ преобразовать все ветви SVN в локальные ветви Git:

for branch in `git branch -r | grep -v tags`; do
    git branch $branch $branch
done

Однако теперь я застрял со списком ветвей, которые выглядят следующим образом:

origin/1.3
origin/1.4
origin/1.5
origin/1.6
origin/1.7
origin/1.8
origin/2.0

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

1.3
1.4
1.5
1.6
1.7
1.8
2.0

Я пытался изучить git filter-branch, но я не уверен, что это именно то, что я хочу.Я также попытался указать свой макет более вручную, например:

git svn clone --trunk=/trunk --branches=/branches --tags=/tags https://svn.server.com/repos/my_repo

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

Вот результат работы git branch -a:

git branch -a
* master
  origin/1.3
  origin/1.4
  origin/1.5
  origin/1.6
  origin/1.7
  origin/1.8
  origin/2.0

1 Ответ

0 голосов
/ 24 октября 2018

Можно добавить

git branch -m old_name new_name

к циклу, чтобы часть сценария bash стала

for branch in `git branch -r | grep -v tags`; do
    new_branch=$(echo $branch | sed 's/origin\///')
    git branch $branch $branch
    git branch -m $branch $new_branch
done

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

...