我的项目位于 2 个存储库中。一种在 SVN 下,一种在 Git 下。每当我在 SVN 中更改某些内容时,我都想对 Git 存储库执行相同的操作。

假设我对 SVN 存储库进行了更改,生成修订版 125。我如何将这些相同的更改应用到我的 Git 存储库(假设我的 Git 存储库已更新到修订版 124)。

谢谢。

有帮助吗?

解决方案

我实际上做了/在寻找为:

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

其他提示

尝试:

svn diff | patch -d /path/to/git/repo -p0

如果要导出特定版本的差异见svn help diff

为什么没有人喜欢的git - svn的?我不能假设没有人知道它。

有是GIT-SVN(和git-HG和git-CVS和git-BZR AFAICT)。至少使用git - svn的,你可以简单地做

git svn clone --stdlayout http://myrepo/root here
使用-s(--stdlayout

假定标准中继线/分支机构/标签/布局,但可以具有任何哪种方式(man git-svn)。

的映射是双向的,所以可以推,拉为具有天然(GIT)的遥控器。不问任何问题。

如果你要产生SVN补丁,后来使用Git应用它,不要忘了使用的 --git命令行选项

  

--git

     

启用对SVN DIFF设计用于交叉兼容性与流行的GIT中的分布式版本控制一种特殊的输出模式   系统

例如,运行

svn diff --git -r 125 > /tmp/patch.diff

除了使用上面提到的补丁之外,您还可以考虑设置一个 提交后钩子 因此,您不必每次提交新内容时都执行此操作。

下为我工作。

来源:如何来创建和应用补丁在GIT

首先,来看看什么样的变化是在补丁。你可以使用Git这样做很容易地应用

git apply --stat fix_empty_poster.patch

请注意,此命令的应用补丁,但只能说明你什么它会做的统计。偷看你喜欢的编辑器的补丁文件后,就可以看到实际的变化是什么。

下一步,你感兴趣的补丁是如何麻烦将是。 Git的,您可以测试补丁之前,你真正使用它。

git apply --check fix_empty_poster.patch

如果你没有得到任何错误,补丁可以应用干净

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top