当前位置:  开发笔记 > 前端 > 正文

Git格式补丁兼容svn?

如何解决《Git格式补丁兼容svn?》经验,为你挑选了5个好方法。

有没有办法让使用git format-patch创建的补丁兼容svn,以便我可以将它提交给svn repo?

我正在使用github上的svn repo工作,并希望将我的更改提交回主回购.我需要创建一个补丁来执行此操作,但是补丁无法应用,因为git格式的补丁与svn不同.我还没有发现一些秘密吗?

更新:虽然目前没有脚本或本机git方式来做到这一点,但我确实设法找到了今年早些时候关于如何手动完成此任务的帖子.我已按照说明操作,并成功将我的git补丁与svn配合使用.

如果有人可以尝试编写脚本来实现这一目标并为git项目做出贡献,那么我将非常感激.

http://kerneltrap.org/mailarchive/git/2008/1/15/570308/thread#mid-570308



1> Nicholas Smi..:

我总是要谷歌,但我发现这种方式完美(对我而言)是:

创建补丁git diff --no-prefix master..branch > somefile.diff,主分区和分支部分是可选的,取决于你想要如何获得你的差异.

发送到任何地方并申请patch -p0 < somefile.diff.

它总是似乎对我来说很好,似乎是我遇到过的最简单的方法.


仅对于特定的提交:`git diff --no-prefix 056a1ba5140 7d939289b80> my.patch`为我工作(其中`056a1ba5140`和`7d939289b80`是git中之前和特定提交的sha-1).

2> 小智..:

简短的回答是patch -p1 -i {patch.file}.

有关详细信息,请参阅此博客:使用git创建Subversion修补程序.



3> 小智..:

这是一个帮助脚本,用于针对最新的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://gist.github.com/44537

4> Norman Ramse..:

SVN可能无法理解输出git diff -p,但你可以诉诸暴力:

    制作两个回购克隆

    在一个克隆中查看最新的东西

    在另一个克隆结帐中,无论什么等同于svn upstream.如果您已提前计划,则在其自己的分支上有一个svn upstream的副本,或者您已经标记了最后一个svn版本.如果您没有提前计划,请使用日期或gitk查找最接近svn状态的git SHA1哈希.

    现在通过diff -r遍历两个克隆计算一个真正的补丁.


或者只关注@ Nicholas-smith的建议并在你的git repo中运行`git diff --no-prefix> somefile.diff`并将其发送给任何svn用户,以便他们使用`patch -p0
5> Bert Huijben..:

Subversion <1.6没有补丁支持.看起来Subversion 1.7允许应用补丁,git/hg扩展到统一差异在我们的TODO列表中.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有