如何将 SVN diff 应用于 Git?
-
20-08-2019 - |
题
我的项目位于 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 apply --stat fix_empty_poster.patch
请注意,此命令的不应用补丁,但只能说明你什么它会做的统计。偷看你喜欢的编辑器的补丁文件后,就可以看到实际的变化是什么。
下一步,你感兴趣的补丁是如何麻烦将是。 Git的,您可以测试补丁之前,你真正使用它。
git apply --check fix_empty_poster.patch
如果你没有得到任何错误,补丁可以应用干净