有没有办法让用git format-patch创建的补丁兼容svn,这样我就可以把它提交到svn repo了?
我正在github上编写一个svn存储库,并希望将我的更改提交回主存储库。我需要创建一个补丁来做这件事,但是补丁不能应用,因为git格式的补丁不同于svn。是不是有什么秘密我还没发现?
更新:虽然目前还没有脚本或原生git方法可以做到这一点,但我还是设法在今年早些时候找到了一篇关于如何手动完成这项工作的帖子。我已经按照说明进行了操作,并成功地将我的git补丁与svn一起使用。
如果有人可以尝试写一个脚本来完成这一点,并为git项目做出贡献,我是每个人都会非常感激的。
http://kerneltrap.org/mailarchive/git/2008/1/15/570308/thread#mid-570308
发布于 2012-11-14 11:01:22
我总是不得不用谷歌搜索这个,但我发现(对我来说)非常有效的方法是:
git diff --no-prefix master..branch > somefile.diff
创建补丁,主和分支部分是可选的,取决于您希望如何获取差异。patch -p0 < somefile.diff
应用。它似乎总是对我很好,似乎是我遇到的最简单的方法。
发布于 2012-03-24 13:38:51
简短的答案是patch -p1 -i {patch.file}
。
有关详情,请参阅此博客:Creating Subversion patches with git。
发布于 2010-11-29 21:16:15
下面是一个帮助脚本,用于与最新的svn变更集和给定的提交进行比较:http://www.mail-archive.com/dev@trafficserver.apache.org/msg00864.html
#!/bin/sh
#
# git-svn-diff
# Generate an SVN-compatible diff against the tip of the tracking branch
TRACKING_BRANCH=`git config --get svn-remote.svn.fetch | sed -e 's/.*:refs\/remotes\///'`
REV=`git svn find-rev $(git rev-list --date-order --max-count=1 $TRACKING_BRANCH)`
git diff --no-prefix $(git rev-list --date-order --max-count=1 $TRACKING_BRANCH) $* |
sed -e "s/^+++ .*/& (working copy)/" -e "s/^--- .*/& (revision $REV)/" \
-e "s/^diff --git [^[:space:]]*/Index:/" \
-e "s/^index.*/===================================================================/"
https://stackoverflow.com/questions/708202
复制相似问题