13

問題

デフォルトでは、ファイルの履歴はブランチの作成前にSVNリポジトリに存在しますが、 git svncloneはブランチの作成以降にのみ履歴をインポートします。

私たちのSVNブランチはsvn copy、それが重要な場合、によって作成されました。

私の試み

私は試しましたが、成功しませ--no-minimize-urlんでした。--follow-parent生成されたGitリポジトリは、ブランチの作成から始めて、これらのパラメーターがない場合と同じです。

望ましい結果

SVNリポジトリ作成からの完全な履歴を持つGitリポジトリ。

アップデート

私の実際のコマンドラインは

git svn clone http://svnserver/repo/dir1/dir2/project

助けになったのは-T、結果のコマンドでの議論でした:

git svn clone http://svnserver/repo/ -T dir1/dir2/project
4

2 に答える 2

10

デフォルトでは、ファイルの履歴はブランチの作成前にsvnリポジトリに存在しますが、git svncloneはブランチの作成以降にのみ履歴をインポートします。

はい。それは本当です。git svnそのように指示された場合にのみ、ブランチをブランチとしてインポートしようとします。git-svnのマンページから:

SVNリポジトリのクローンを作成するときに、リポジトリレイアウトを記述するためのオプション(--trunk、-tags、-branches、-stdlayout)が使用されていない場合、git svn cloneは、完全に線形の履歴を持つgitリポジトリを作成します。ブランチとタグは、作業コピーでは別々のディレクトリとして表示されます。

(トップレベルのURLではなく) 1つのブランチのURLを渡すと、git svn cloneそのブランチの線形履歴のみが取得されます。それはおそらくあなたが見ているものです。

完全な履歴が必要な場合は、上記のリポジトリレイアウトオプションを使用して、最上位のURLを渡します。次にgit svn、SVNブランチ用のgitブランチを作成しようとし、作成前に戻って、適切な履歴を提供しようとします。

これにより、すべてのブランチを含む完全なリポジトリが提供されることに注意してください。一部のブランチのみが必要な場合は、マンページで説明されているように構成を変更する必要があります。

中括弧内の名前のコンマ区切りリストを使用して、ブランチまたはタグのサブセットをフェッチすることもできます。例えば:

       [svn-remote "huge-project"]
               url = http://server.org/svn
               fetch = trunk/src:refs/remotes/trunk
               branches = branches/{red,green}/src:refs/remotes/branches/*
               tags = tags/{1.0,2.0}/src:refs/remotes/tags/*

git-svn(1)を参照してください。

于 2013-03-02T01:31:00.197 に答える
1

http://git-scm.com/book/en/Git-and-Other-Systems-Migrating-to-Gitでは、ブランチとタグを適切にインポートする方法について説明しています。

于 2013-03-02T12:09:13.990 に答える