Web上で「svnからgitへの移行」やその他の「git-svnワークフロー」の記事をたくさん読んだことがありますが、それでも、過度に単純な状況を扱っていることが多いと思います。多くの場合、git-svnを使用してsvnリポジトリのクローンを作成する複数の開発者間で、pull、fetch、mergeなどのgitのフルパワーを使用せずに、gitを使用してローカルでハックしたい人を対象としています。それでも、変更をいつでも(公式の)svnリポジトリにプッシュして、gitでの作業に戻り、内容を共有できることなどを期待しています。
これらの記事で、純粋なgitで行うすべてのことを実行できないことを認めるときはいつでも、結果と起こりうる混乱が明確に説明されることはありません(または、それは私だけですか?)。git-svnのマニュアルページでさえ警告について言及していますが、実際には広範囲にわたるものではありません。
私が読んだことによると、git-svnをその特定の方法で使用すると、問題が発生する可能性があると感じています。これについては、以下で説明します。私がこれについて正しいかどうか誰かに教えてもらえますか?
これが物事を行うための「望まれる」方法です:
- svnリポジトリにプロジェクトがあります
- 開発者git-svn-cloneはsvnリポジトリです。彼はローカルで物事をハックし始めます
- 開発者Bgit-svn-cloneは同じsvnリポジトリです。彼は自分で物事をハックし始めます。
- しばらくの間それを行い、おそらく開発者C / D / ...を追加し、元のリポジトリに「標準」のsvnコミットを行う他の開発者がいると、gitユーザーはコードを共有してあらゆる種類のgitマジックを実行したいと思うでしょう。 。
- これらのgitユーザーのいずれかが、マージされた変更をsvn(dcommit?)にプッシュできるようにしたいと考えています。
私の質問は:私は夢を見ていますか?少し前に読んだのですが、gitの本で、git-svn-cloneはもちろんsvnリポジトリの「ミラー」であるgitリポジトリを作成できますが、異なる開発者によってそのように作成されたgitリポジトリは異なる」 ids」とコミットは異なるハッシュを持ちます。したがって、私の理解では、これらのgitリポジトリは共通のgit祖先を共有しないため、共有、マージなどに必要なすべてのgitコマンドを使用することはできません。それは本当ですか、このワークフローで問題に直面するのでしょうか?
時々私はこれが少なくとも「公式の」裸のgitリポジトリを使用して行われる可能性があることを読みました。それはgit-svn-clonedされる唯一のものであり、すべてのgitユーザーはこれから始めなければなりません。次に、この中央のgitリポジトリを担当し、すべてをsvnリポジトリにコミットする前に、gitdev間の変更を収集する人が必要です。これは、gitユーザーが元のgitリポジトリがsvnからのものであることを「認識」せず、すべてのgitコマンドを好きなように使用できるようにする唯一の方法です。gitとsvnの両方に堪能である必要がある(そしてgit-svnの警告について知っている)必要があるのは、「マージマネージャー」(または彼が呼んでいるもの)だけです。
私はgit-svnの警告を完全に誤解していますか?これを行う簡単な方法はありますか?