module
Subversion リポジトリのサブディレクトリ (ここで示す) を、完全な履歴を持つ git リポジトリに変換したいと考えています。私の Subversion リポジトリの歴史には、多くのsvn copy
操作 (Subversion の人々はそれらをブランチと呼んでいます) があります。リリース ポリシーは、各リリースまたは他のブランチが作成された後、古い URL は使用されずに残され、新しい URL が作業を含む古い URL に置き換わるというものでした。
最適には、私の読書では、これでうまくいくようです:
$ git svn clone --username=mysvnusername --authors-file=authors.txt \
--follow-parent \
http://svnserver/svn/src/branches/x/y/apps/module module
(どこbranches/x/y/
が最新のブランチを示しています)。しかし、次のようなエラーが発生しました。
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/svn/src/!svn/bc/100/branches/x/y/apps/module' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
(更新:上記にオプション--no-minimize-url
を追加しても、エラー メッセージは削除されません。)
ディレクトリmodule
が作成されてデータが入力されますが、最新のコミット以降の Subversion 履歴svn copy
はインポートされません (作成された git リポジトリには、何百ものコミットがあると予想していたときに、最終的に 2 つのコミットしかありません)。
問題は、この状況で完全な Subversion 履歴をエクスポートする方法です。
考えられる原因
エラーメッセージを検索すると、これが見つかりました: git-svn anonymous checkout fails with -s which linked to this Subversion issue: http://subversion.tigris.org/issues/show_bug.cgi?id=3242
読んでわかったことは、Subversion 1.5 で、クライアントがリポジトリにアクセスする方法が変更されたことです。新しい Subversion では、URL パスの一部のスーパー ディレクトリへの読み取りアクセスがない場合 (私には当てはまり、 で
svn ls http://svnserver/svn
失敗します403 Forbidden
)、一部の Subversion 操作で失敗します。Jeff Fairley は、彼の回答で、Subversion URL のスペースもこのエラー メッセージを引き起こす可能性があると指摘しています (ユーザー Owen によって確認されています)。あなた
git svn clone
が同じ結果で失敗した場合、彼の解決策を見て、彼がどのようにケースを解決したかを確認してください。Dejay Clayton の回答によると、ブランチとタグ svn url の最も深いサブディレクトリ コンポーネントが同じ名前 (たとえば
.../tags/release/1.0.0
と.../branches/release-candidates/1.0.0
) の場合、このエラーが発生する可能性があります。