0

少し前に標準レイアウトでSVNから複製されたgitリポジトリがあります。(それは git svn init と git svn fetch で行われました)。現在、git 1.7.9 を使用しています。私の svn-remote config セクションは次のようになります。

[svn-remote "svn"]
        url = https://myhost/svn/myProject
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*

最初にフェッチされたすべてのブランチは正しく機能し、その後のフェッチもこれらのブランチとトランクで正しく行われます。ディレクトリ構造は、各ブランチの下で次のようになります。

subProject1\src\myPackage
subProject2\src\
subProject3\src\

これで、2_7_1 という名前の新しいブランチが作成され、他のすべてのブランチとトランクのディレクトリ構造が一致しました。

git svn fetchを実行すると、トランクから 2_7_1 ブランチが作成されたリビジョンからのみ取得するのではなく、r1 から各リビジョンの取得が開始されます。その理由は、 subProject1\src\myPackageではなくsrc\myPackageディレクトリ構造を想定しているため、r1 から始まるすべてのリビジョンのフェッチを開始するためです。

ブラウザで SVN リポジトリを参照すると、ディレクトリ構造に違いはありません。新しいブランチは 2_7_1@18813 (18813 は新しいブランチの開始リビジョン番号) と呼ばれ、他のすべてのブランチにはリビジョンが含まれておらず、ブランチ名のみが含まれているという 1 つの違いに気付きました。

ここで提供されているソリューションを使用したくありません:リポジトリを取得した後に作成されたリモート ブランチについて git-svn に通知するにはどうすればよいですか? 、トランクと 2_7_1 ブランチの共通の親が失われるためです。

編集: 完全なgit svn fetchを実行した後、私の git svn が 2_7_1 と 2_7_1@18813 の 2 つのブランチを認識していることが明らかになりました。2_7_1@18813 はリビジョン #1 から取得されました。そして、これはSVNトランクを追跡する以前のマスターブランチを台無しにしました。

今、私のブランチ構造は次のようになります(完全な混乱):

------------------------------------------- X -- Y -- Z  ==  masterNew/trunk

-- A -- B -- C -- D -- E -- F -- G ----  == 2_7_1@18813
                                    \  \
                                     \  \ - J - K - L == master (old trunk)
                                      \
- A' - B' - C' - D' - E' - F' - G' -- H -- I == 2_7_1

編集 #2: git svn clone を使用して SVN リポジトリの完全なクローンを作成した後も、問題は解決しません。

4