64

このエラー メッセージが表示されるのはなぜですか?

4

11 に答える 11

39

--no-metadataオプションでsvnリポジトリを複製したため、このメッセージが表示されました。多分それはあなたの問題にも当てはまります。

そのオプションなしでクローンを作成すると、すべて問題ありません。

このオプションは、新しいクローンが将来正規のソースになる--no-metadataときに、SVN リポジトリをクローンすることを目的としています。gitgit clone と SVN アップストリームの違いを追跡する方法がないため、SVN アップストリームにコミットする能力がありません。

于 2010-10-26T07:23:59.833 に答える
35

(チャドの「質問」を回答として投稿し、フォーマットとタイプミスを修正しました。)

このエラー メッセージにはいくつかの原因があります。

最初に、最も一般的です。git リポジトリには 2 つのばらばらの履歴があります。git で作成した履歴と、リモートの svn リポジトリからの履歴です。

これを修正するには、git リポジトリと svn リポジトリが 1 つの共通の祖先を共有するようにして、どのコミットが何を変更したかを git が把握できるようにする必要があります。

次の記事では、問題を解決する方法について説明しています。

この問題の 2 番目に考えられる原因は、初期バージョンの git (Windows msysGit パッケージの可能性があります) を使用していて、リモート svn リポジトリと通信する新しい git リポジトリを作成したばかりである場合です。

例えば:

git svn init svn://svn.xxx.xxx/xxx/trunk
git svn fetch -r BASE:10

また

git clone svn://svn.xxx.xxx/xxx/trunk // Adds all the files in the revision...

また、次のコマンドを使用すると、次のエラー メッセージが表示されます。

git svn info

作業ツリーから上流の svn 情報を特定できないか、

git svn rebase

上流の svn 情報作業ツリーの履歴を特定できない、または

  git svn dcommit

HEAD 履歴から上流の SVN 情報を特定できません

上記のエラー メッセージが表示された場合は、最初に git のバージョンを確認してください。古い git バージョン <= 1.6.3.3.* (私の場合は (msysGit)) を実行している場合、問題を解決する最も簡単な方法は、1.6.4.* などの git の最新バージョンに更新することです。

次の記事では、この問題について詳しく説明します。

于 2010-08-10T00:03:49.727 に答える
18

私の場合、svnリポジトリのHEADはgitリポジトリのHEADと一致している必要があります。これで問題が解決するはずです。

git update-ref refs/remotes/git-svn refs/remotes/origin/master

たとえばsvntrunk、svnトランクに別のgitブランチを使用する場合は、代わりにそのブランチを参照する必要があります。つまり、次のようになります。

git update-ref refs/remotes/git-svn refs/remotes/origin/svntrunk
于 2011-09-26T11:55:50.137 に答える
9

同じ問題が発生しました。これは、http: //eikke.com/importing-a-git-tree-into-a-subversion-repository/の記事に基づく解決策です。

$ git svn init http://server.com/svn/project/trunk/prototypes/proto1/
$ git svn fetch
  W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/!svn/bc/100/dcom/trunk/prototypes/ws' path not found
  W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
  This may take a while on large repositories
  r147367 = 37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d (refs/remotes/git-svn)
$ svn log http://server.com/svn/project/trunk/prototypes/proto1/
  ------------------------------------------------------------------------
  r147367 | user | 2014-01-16 18:02:43 +0100 (Thu, 16 Jan 2014) | 1 line
  proto1 home
  ------------------------------------------------------------------------
$ git log --pretty=oneline master | tail -n1
  71ceab2f4776089ddbc882b8636aacec1ba5e832 Creating template
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #1

$ git show-ref git-svn
  37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d refs/remotes/git-svn
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #2

$ echo "71ceab2f4776089ddbc882b8636aacec1ba5e832 37c9910f794cb9cff7ca0d5d2eb26e1f0dabbc4d" >> .git/info/grafts

$ git svn dcommit
  Committing to http://server.com/svn/project/trunk/prototypes/proto1 ...
    A   README.md
    A   pom.xml
A   src/main/java/.gitkeep
A   src/main/resources/.gitkeep
A   src/main/webapp/WEB-INF/web.xml
A   src/main/webapp/index.html
A   webapps/.gitkeep
  Committed r147419
    A   README.md
    A   pom.xml
A   src/main/java/.gitkeep
A   src/main/resources/.gitkeep
A   src/main/webapp/WEB-INF/web.xml
A   src/main/webapp/index.html
A   webapps/.gitkeep
  r147419 = 6a8bda7262739306d0a6e17eaad2802737dedc35 (refs/remotes/git-svn)
  No changes between current HEAD and refs/remotes/git-svn
  Resetting to the latest refs/remotes/git-svn
  Unstaged changes after reset:
    M   pom.xml
    M   src/main/webapp/index.html
    A   .gitignore
  Committed r147420
    M   pom.xml
    M   src/main/webapp/index.html
    A   .gitignore
  r147420 = 749b5acec55c341672bca08d07de8c336b5a4701 (refs/remotes/git-svn)
  No changes between current HEAD and refs/remotes/git-svn
  Resetting to the latest refs/remotes/git-svn
  ...etc...
于 2014-01-17T10:55:39.913 に答える
9

、、および相対パスの「標準 Subversion レイアウト」を持たないSubversion リポジトリのコマンドに-s/--stdlayoutパラメータを誤って追加した後に、このメッセージが表示されました。git svn clonetrunktagsbranches

(私が通常クローンする Subversion リポジトリには標準の相対パスがあるため、通常のコマンドを使用してそれらを持たない Subversion リポジトリをクローンすると、git svn cloneこの不可解なメッセージが表示されました。メッセージは 100% 正しいですが、ほぼ 100% 役に立ちません。問題が何であるかを理解しようとするとき。)

于 2011-07-19T20:01:39.837 に答える
2

この問題のもう 1 つの原因は、間違ったsvn-remote.svn.rewriteRootオプションです (使用方法については、この回答を参照してください)。

Subversion からインポートされたコミットの行は、設定されている場合、URLgit-svn-idと一致する必要があります。rewriteRoot

于 2011-09-25T13:03:12.950 に答える
0

別の考えられる原因: svn-remote..rewriteUUID 構成セットがある場合、git-svn がリポジトリの正しいメタデータを見つけるのに問題がある可能性があります。たとえば、次のような場合があります (なぜこれを行う必要があるかについては、git-svn の man ページを参照してください)。

[svn-remote "svn"]
    url = svn://read-write.test.org
    fetch = trunk/project:refs/remotes/trunk
    rewriteRoot = http://read-only.test.org/svn
    rewriteUUID = 1234-abcd

... ここで、1234-abcd は読み取り専用ミラーの UUID です。「git svn fetch」すると、次のファイルになる可能性があります。

.git/svn/refs/remotes/trunk/.rev_map.5678-dcba

... ここで、56780-dcba は読み取り/書き込みリポジトリの UUID です。修正は次のとおりです。

$ mv .git/svn/refs/remotes/trunk/.rev_map.5678-dcba \
    .git/svn/refs/remotes/trunk/.rev_map.1234-abcd

それが永続的な解決策であるかどうかは定かではありません。つまり、次に 'git svn fetch' を実行したときに混乱する可能性があります。「mv」ではなくシンボリックリンクを試すかもしれませんが、私はそれを試していません。

于 2014-04-11T18:29:34.910 に答える
0

これは、BFG Repo-Cleaner https://rtyley.github.io/bfg-repo-cleaner/を使用して git 履歴を書き換えた後 (意図的に)、svn fetch を再度 git しようとした後に見ました。このメッセージは、git <-> svn の一致が失われたことを示しています。

これを解決するには、https://git-scm.com/docs/git-svn
を読んでください 。

$GIT_DIR/svn/ */.rev_map.

Subversion リビジョン番号と Git コミット名の間のマッピング。noMetadata オプションが設定されていないリポジトリでは、これは各コミットの最後にある git-svn-id: 行から再構築できます (詳細については、上記の svn.noMetadata セクションを参照してください)。

これを行うには、コミット コメントに git-svn-id コメントが必要です。その場合は、.rev_map.* ファイルを削除して再構築できます。

rm .git/svn/refs/remotes/git-svn/.rev_map.*
git svn info

次のように表示されます。

Rebuilding .git/svn/refs/remotes/git-svn/.rev_map.{snip} ...
...
Done rebuilding .git/svn/refs/remotes/git-svn/.rev_map.{snip}
Path: .
...and then regular git svn info output
于 2018-08-01T15:58:45.110 に答える