mac Catalinaで git-svn 使えなかったのの解決

mac
スポンサーリンク

1個目のエラー、catalinaのgitはsvn使えない

最初に出たやつ

git: 'svn' is not a git command. See 'git --help'.

The most similar commands are
fsck mv
show
$ brew install git
$ brew install subversion
$ brew install perl

~/.bashrcに以下追加。(ワテの場合はbashrcが読み込んでるlocalrcに追加した)

PATH=/usr/local/git/bin:$PATH
export PATH
source ~/.bashrc

 

 

Mac(Catalina)でgit-svnを使えるようにする – hatena

 

 

2個目のエラー、Core.pmが見つからないエラー(よくわからん)

 

Can't locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/Cellar/git/2.29.2/share/perl5 /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.4 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /usr/local/Cellar/git/2.29.2/share/perl5/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/2.29.2/share/perl5/Git/SVN/Utils.pm line 6.
Compilation failed in require at /usr/local/Cellar/git/2.29.2/share/perl5/Git/SVN.pm line 25.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/2.29.2/share/perl5/Git/SVN.pm line 32.
Compilation failed in require at /usr/local/Cellar/git/2.29.2/libexec/git-core/git-svn line 23.
BEGIN failed--compilation aborted at /usr/local/Cellar/git/2.29.2/libexec/git-core/git-svn line 23.

 

/usr/local/opt/git/libexec/git-core/git-svn を開いて1行目を #!/usr/local/bin/perl に変更すると解消された。こんなんでいいんかな…。

Mac で git svn すると Can’t locate SVN/Core.pm エラー

 

 

3個目のエラー、SVNサーバに到達できない「Unable to connect to a repository」

Can't create session: Unable to connect to a repository at URL 'http://path/': Error running context: The server unexpectedly closed the connection. at /usr/local/Cellar/git/2.29.2/share/perl5/Git/SVN.pm line 310.

SVNサーバに到達できるVPNに参加してないだけやった。

 

4個目のエラー、 「Author: (no author) not defined in ../members.txt file」

--authors-file=../members.txt

 

Author: (no author) not defined in ../members.txt file

っていうメッセージが出て、cloneされない。

members.txtに、以下を追記した。

(no author) = no_author <no_author@no_author>

参考(thx)

 

 

5個目のエラー、Error from SVN, (175009): Malformed network data: The XML response contains invalid XML: Malformed XML: no element found at line 1

--log-window-size=

オプションを追加して実行。

参考(thx)

 

 

6個目のエラー、trunkしかクローンされず、branches、tagsがコピーされない

$ git branch
* master
$

 

--no-minimize-url

オプションを付けてみる。

git-svn clone checkouts wrong repo?

 

ついでに

--prefix=svn/

もつけてみた。

  • branchの名前がorigin だったのが、
    • svn/origin  になるオプション。

変わらず。

て思ったら、リモートリポジトリとしてはコピーできている。そういうもんらしい。

$ git branch -r
  svn/banner_test
  svn/tags/20050725
  svn/trunk
$

以下を参考に実施。

SVNからGitへの移行 ~ SVNからGitLab CE(Self-hosted)への移行ステップガイド

macだとうまく動かんので一旦断念(forコマンドがBSDのだから?)

 

 

結局、最終的にうまく行った手順

git svn clone

git svn clone --log-window-size=4000 --trunk=/trunk --branches=/branch --tags=/tags --authors-file=members.txt --no-metadata --username=kuzuriman http://アドレス/path/path 保存先ローカルディレクトリ

 

 

gitコマンドで実施

 

gitリポジトリ内に入る

 

タグ情報をgitの形式に変換する。(下記コマンドそのままコピペでOK)

git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done

 

ブランチ情報をgitの形式に変換する。(下記コマンドそのままコピペでOK)

git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done

trunk ブランチを削除する

git branch -d trunk

 

error: branch 'trunk' not found.

って怒られた。

$ git branch -d origin/trunk

でやったら削除できた。

(一応怖かったので、svnサーバにアクセスできない環境で実施した。(VPN切ってから実施した))

 

 

コメント