5

私は私だけがgitを使用している立場にあり、他のすべての人はsvnを使用しています。私は「gitsvn」を使用してチームsvnに接続しましたが、ほとんどの場合、問題なく動作します。最近、私は最初に自分でプロジェクトを開始し、別のgitリポジトリを作成しました。次に、プロジェクトからsvnにデータをマージする必要があります。ただし、リリース間で自分のプライバシーで実装を微調整し続けたいと思います。

では、プライベートリポジトリからsvn-clonedリポジトリへのコミットをチェリーピックする最も簡単な方法は何でしょうか?要件は、完全なローカル履歴を保持し、ピックごとに1つのsvnコミットのみを持つことです。それとも、やらなければならない潰しがありますか?

これを実現する方法として、svn-clonedリポジトリの別のオリジンとしてプライベートリポジトリを取得する方法はありますか?

4

2 に答える 2

2

gitsvnリポジトリの前にGitリポジトリからgit-svnリポジトリのコミットにコミットをgitグラフトしようとすることができますgit dcommit

よりクリーンな履歴をエクスポートするためにあらゆる種類の押しつぶしを実行できる場合、リポジトリからのコミットを特別なブランチに分離することができます。

于 2010-03-19T12:14:48.740 に答える
1

現時点でgitリポジトリを使用しているのがあなただけの場合は、作成した空のSubversionクローンに基づいてすべての作業をリベースすることを検討できます。次に、プッシュをSubversionに戻すためのブランチを設定し、各リリースをそのブランチに押しつぶして、SVNにコミットします。

より詳細な解決策については、git commit-tree直接使用することを検討してください-コミットするツリーgit show --format=raw HEAD(2行目(「ツリー」)を実行して確認することで見つかります)、正しい親コミット(現在subversionにあるもの)を提供しますstdinの正しいログメッセージ。これは配管を直接使用しているので、スクリプトを作成してそれを実行することをお勧めします...その結果、既存のコミットのファイルの内容を含む新しいコミットを作成したことになります(cherry-pickと比較してください。ツリーをコピーするのではなく、既存のコミットによって追加された差分)。

于 2010-03-19T12:33:02.700 に答える