0

以前の 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 mastergit cherry master origin

ログファイルから最後のチェリーピックを解析する必要がありますか? を使用git cherry-pick -xしているので、そこにレコードがあります。

4

1 に答える 1

0

だから私は解決策を持っていると思います-すべてのgit cherry-pick...git svn dcommitラウンドの後、私はgit tag -f last-picked origin. では、次回は からlast-pickedまでのチェリー ピックを行いoriginます。

誰かの回答がより良い解決策を持っている場合は、その回答を承認済みとしてマークしたいと思っていますが、現時点では、別の回答は必ずしも必要ではないようです。

于 2012-10-31T14:34:46.707 に答える