以前の SO スレッドでの Adam Spiers の回答に基づいて、SVN リポジトリのパスに Git リポジトリを定期的に公開するプロセスを設定しました。すべてが順調に進んでいますが、私が理解していない部分が 1 つあります。を使用して後続の Git の変更をcherry-pick
取得している場合、この Git 側で発生した新しい変更のうち、SVN 側に選択する必要があるものをどのように把握すればよいですか?
より具体的に言うと、Git 履歴を SVN に最初にプッシュした後master
、Git オリジンと同じコンテンツとパッチ履歴を持つブランチに座っていますがorigin/master
、基本的には完全な履歴から分岐しています。
% git --no-pager diff master git-svn
% git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 2 different commit(s) each, respectively.
#
nothing to commit (working directory clean)
ここで、新しいアップストリームの変更をフェッチします。
% git fetch
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /cygdrive/c/foo/git/testrep
6d7dd94..08d3d19 master -> origin/master
この時点で、チェリー ピックする必要があるリビジョンを特定する必要があります。次に、それらをチェリー ピックしてgit svn dcommit
. しかし、そのチェリーのリストを取得する方法がわかりません。私はさまざまなgit cherry
コマンドを試しましたが、両方とも、基本的に各側のすべての変更の長いリストを報告しますgit cherry origin master
。git cherry master origin
ログファイルから最後のチェリーピックを解析する必要がありますか? を使用git cherry-pick -x
しているので、そこにレコードがあります。