在修订之间创建“补丁”?
Posted
技术标签:
【中文标题】在修订之间创建“补丁”?【英文标题】:Create "patch" between revisions? 【发布时间】:2014-02-14 20:06:53 【问题描述】:看来 SVN 的“补丁”功能并不是我想要的。我真正想要的是在修订之间创建文件差异。所以,我会选择 rev1 和 rev 2 并最终得到一个文件夹,其中包含在这些修订之间更改或添加的所有文件。
这可以用 Tortoise SVN 或普通的 svn 完成吗?
【问题讨论】:
两次修订之间删除的文件怎么办? 【参考方案1】:您可以从命令行执行以下操作。
文件夹中的所有文件
在您的主文件夹中创建一个补丁,其中包含来自“my_project”文件夹中所有已更改文件的修订 123 和 124 之间的所有更改:
svn diff -r123:124 path/to/my_project > ~/my_project_changes_123_124.patch
一个特定的文件
在您的主文件夹中创建一个补丁,其中包含仅来自一个文件的修订 123 和 124 之间的所有更改,名称为“my_project.php”:
svn diff -r123:124 path/to/my_project/my_project.php > ~/my_project_changes_123_124.patch
【讨论】:
我不想要一个“补丁”文件,我想要在修订之间更改的原始文件。接受的答案解决了我的问题。谢谢。 要在当前版本和旧版本 116615 之间打补丁,你可以这样做: svn diff -r 116615 svn-branch-url > file.diff【参考方案2】:这可以在乌龟SVN本身中实现。右键单击要从中创建补丁的分支(文件夹)>>Show Log
>>选择您需要为其创建补丁的所有修订>>右键单击并选择Compare revisions
>>这将显示更改的文件>>选择所有文件>>右键单击并选择Export Revision To
>>在您的机器中提供任何路径>>文件将在相应的文件夹结构中导出。
您也可以通过脚本来实现这一点。请参考以下链接:
http://www.electrictoolbox.com/subversion-export-changed-files-cli
【讨论】:
或者代替Export Revision To
,你可以选择Show differences as unified diff
来创建补丁文件。【参考方案3】:
嗯...svn diff
怎么样?只需将所需的修订传递给它。
http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.diff.html
在 TortoiseSVN 中,如果您在“显示日志”对话框中突出显示您想要的修订,甚至还有一个上下文菜单项可以将更改显示为差异,然后您可以将其保存在某个地方。
【讨论】:
我不想要“补丁”文件,我想要在修订之间更改的原始文件。接受的答案解决了我的问题。谢谢。 啊,所以“文件差异”实际上是指“更改的文件列表”。是吗? 不,更改的实际文件。接受的答案完成了这一点。谢谢!以上是关于在修订之间创建“补丁”?的主要内容,如果未能解决你的问题,请参考以下文章
从 git 存储库创建补丁或差异文件并将其应用到另一个不同的 git 存储库