web-dev-qa-db-ja.com

git svn show-ignoreはエラー「コマンドがエラーを返しました:1」を返します

プロジェクトをSVNからgitに移行しようとしています。これは私が使用するコマンドです:

$ git svn clone http://oursvnserver/ --no-metadata -A ../authors-transform.txt --trunk=path/to/trunk --branches=path/to/branches --tags=path/to/tags . --username=mysvnusername --prefix=Origin/

現在のディレクトリは、私がリポジトリにしたいディレクトリです。 authors-transform.txtは間違いなく正しい場所にあります。プロジェクトは標準レイアウトを使用しますが、リポジトリのルートには存在しません。 (残念ながら、誰かがずっと前に、すべてのプロジェクトを同じリポジトリに詰め込むという慣習を始めました。そのため、--trunk--branches、および--tagsを指定します。)問題なくチェックアウトしているようです。次に、無視ファイルを生成して、この信じられないほど不可解なエラーを取得しようとします。

$ git svn show-ignore
config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1

プロセスで他のコマンドを実行しているように見えるので、推測しました。

$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn || echo $?
1
$ git config --get svn-remote.svn.fetch :refs/remotes/git-svn$ || echo $?
1

それで、多分私はそれがどのコマンドを呼んでいるかについて正しく推測していますか?しかし、それは実際には役に立ちません。

このエラーは実際にはどういう意味ですか?何を解決できますか?

Msysgit1.9.4の使用。

24
jpmc26

したがって、これはgitがsvn-remoteファイルの$GIT_DIR/configセクションで一致するfetchエントリを見つけることができないことが原因です。 git svn show-ignoreへの引数がないと、そのセクションで何を探すべきかわかりません。 (たぶん私の追跡は正しく設定されていませんか?)

これに対処するには、最初に、表示するリモートを指定する必要があります。

git svn show-ignore --id=Origin/trunk

(クローンを実行するときに「Origin」プレフィックスを指定したことに注意してください。それに応じてコマンドを変更してください。)

第二に、これはまだ私のブランチで非常によく似たエラーで失敗しました。トランクでは問題なく機能しましたが、ブランチでは機能しませんでした。これは、ブランチにnofetchエントリがあったためです。それらを追加するには、次のコマンドを使用します(プレフィックスを調整して):

git config --add svn-remote.svn.fetch path/to/branches/branchname:refs/remotes/Origin/branchname

すべてのfetchエントリを表示し、それが機能することを確認するには:

git config --get-all svn-remote.svn.fetch

トランクのエントリだけが最初に設定されている理由がわかりません。多分私はクローンで何か間違ったことをしました。

35
jpmc26