0

複数のプロジェクトが含まれる Subversion リポジトリを使用して、 git svnを介して Subversion で Git を使用しようとしています。プロジェクト構造は次のようになります。

根/

*プロジェクト1/

トランク/

タグ/

特定の支店名1/

特定のブランチ名 2/

プロジェクト2/

トランク/

タグ/

特定の支店名1/

を実行することで、Project1 を git リポジトリに入れることができます。ただし、トランクタグSpecificBranchName1およびSpecificBranchName2は私のツリー構造にあります。git svn clone -s http://path/to/repo/Root/Project1 --no-follow-parent

--no-follow-parentフラグを削除すると、「 http://path/to/repo/Root/Project1/SpecificBranchName1の revmap が見つかりませんでした」というエラー メッセージが表示されます。 試してみると、同じメッセージが表示されます。git svn clone -T trunk -t tags -b . http://path/to/repo/Root/Project1

git リポジトリのブランチは本当に必要ないので、:でスキップしようとしましたが、同じエラーが発生しました。git svn clone -s --ignore-paths="^SpecificBranchName1" http://path/to/repo/Root/Project1

私が知る限り、この Subversion ファイル構造は奇妙です。通常ブランチは./branchesの下にありますが、何らかの理由でタグトランクと同じファイル パスに含まれています。とにかくこれを乗り越えることはありますか?

4

2 に答える 2

1

ブランチが必要ない場合は、次を試してください。

git svn clone http://path/to/repo/Root/Project1 --trunk=trunk --tags=tags Project1

つまり、使用する 2 番目のコマンドとほぼ同じですが、-b の部分はありません。git svn要求されていない場合、ブランチを検索しようとしません。

その後、.git/configmanojlds が提案するように編集を試すことができます。

編集:わかりました、さらにテストを実行します。あなたのフォルダー構造でsvnリポジトリを再作成しました。私はgit svnそれを使用しようとしましたが、すべてがスムーズに進みました。私はgit 1.7.1を使用しています。

次に、 Google Code Searchで「couldn't find revmaps」という文字列を探したところ、次のものが見つかりました。

sub lookup_svn_merge {
        ...
        my $gs = Git::SVN->find_by_url($url.$source, $url, $path);
        if ( !$gs ) {
                warn "Couldn't find revmap for $url$source\n";
                return;
        }
        ...

のコード全体を読むつもりはありませんgit svnが、ここから推測するに、Git はトランク内にマージ ポイントを見つけ、そのマージは Git が何も知らないパスから来ており、何らかの理由で届きません。

このケースを再現しようとしましたが、すべてうまくいきました。可能な解決策:

  • Git のバージョンが最新でない場合はアップグレードします
  • トランクに SpecificBranchName1 からのマージが実際に存在するかどうかを確認し、存在する場合は、それ以降のリビジョンのみを使用して Git リポジトリを初期化します

これが役立つことを願っています...

于 2011-05-27T17:32:34.160 に答える
1

あなたのものは決して標準的な構造ではありません(もちろん、あなた自身もそう言っています)では、なぜ-sフラグを使用しているのですか?

svnにブランチフォルダーを作成し、ブランチの移動をそこに移動することをお勧めします。これにより、多くの痛みを防ぐことができます。

さまざまな理由でそれができない場合は、project1 ルートに対して git int を実行し、.git/config を編集して、以下のブランチ部分を変更できますsvn-remote

branches = {SpecificBranchName1,SpecificBranchName2}:refs/remotes/branches/*

(相対 URL の状態に基づいて上記を調整します)

そして、フェッチを行います。

于 2011-05-27T16:54:10.653 に答える