0

我已经根据Adam Spiers 在之前的 SO 线程中的回答设置了一个流程,以定期将 Git 存储库发布到 SVN 存储库中的路径。一切都很好,但有一件我还没有弄清楚。当我使用 获取后续 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,所以我确实有记录。

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 回答