読者です 読者をやめる 読者になる 読者になる

Subversionのbranchesやtagsの階層が深くて移行に失敗してた

SVNからGitへ移行したリポジトリにPushしようとするとSourceTreeでエラーがでる

$ git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin foo:foo
Pushing to http://userid@git.example.com/scm/migration/hogehoge.git

error: src refspec Tools matches more than one.
error: failed to push some refs to 'http://userid@git.example.com/scm/migration/hogehoge.git'
  • どうやらブランチ名と同じタグ名がいるので失敗しているらしい。タグを消せばいいのかもしれないけど、そもそもこの状況はおかしいので調べてみました。

1つのリポジトリ複数のプロダクトを入れて管理してたのでbranchesやtagsの階層が深かったらしい

  • で、git svn clone -sだと上手く取れなかったというわけですね。
  • なんか、バージョンが付いてないToolsとかいうタグがあっておかしいなーって思ったんですよねw

移行し直し

  • 仕方がないのでもう一度最初から移行し直します。
  • 今度は、branchesやtagsの位置をオプションで指定します。
    • とても長いです。
$ git svn clone --trunk=/trunk --branches=/branches/foo1 --branches=/branches/foo2 --branches=/branches/foo3 --branches=/branches/foo4 --branches=/branches/foo5 --branches=/branches/foo6 --branches=/branches/foo7 --branches=/branches/foo8/bar1 --branches=/branches/foo8/bar2 --tags=/tags/foo1 --tags=/tags/foo2 --tags=/tags/foo3 --tags=/tags/foo4 --tags=/tags/foo5 --tags=/tags/foo6 --tags=/tags/foo7 --tags=/tags/foo8 --tags=/tags/foo9 --tags=/tags/foo10 --tags=/tags/foo11 --tags=/tags/foo12 --tags=/tags/foo13 --tags=/tags/foo14 --tags=/tags/foo15 --tags=/tags/foo16 --tags=/tags/foo17 --tags=/tags/foo18/bar1 --tags=/tags/foo18/bar2 http://svn.example.com/svn/hogehoge hogehoge

注意点

  • でかいリポジトリなので1日中流しても終わりません。
    • ほっといたら止まっていたので、コマンドを流し直したらエラーが出るようになりました。

移行したらリポジトリを整理して分割させないと・・・