使用 SVN,如何选择性地创建补丁文件?

Posted

技术标签:

【中文标题】使用 SVN,如何选择性地创建补丁文件?【英文标题】:Using SVN, how do I selectively create a patch file? 【发布时间】:2019-04-25 09:23:39 【问题描述】:

我有一个代码库,其中有几个更改,最好分成几个提交。

git 中,我将使用git add -p 从每个文件中选择我想要的更改,并基于这些创建提交和拉取请求。

我是 SVN 的新手,我想知道实现这一目标的最佳方法是什么?看起来我可以进行文件级选择,但不能在这些文件中进行更改?

我使用 TortoiseSVN 作为我的本地版本控制工具,但我很乐意使用另一个工具(必须在 Windows 上运行),如果有一个可以满足我的需求。

【问题讨论】:

看这个:twitter.com/visualsvn/status/977190471939313664 【参考方案1】:

这是 SVN 无法提供的。将工作区域中的更改分成多个提交只能具有文件粒度。您不能将同一文件中的更改拆分为多个提交。

所以我想说你应该看看how git-svn works。它允许您在 SVN 存储库上使用 Git,但有一些限制。例如,您将使用git dcommit 推送到 SVN 存储库。您也必须使用 rebase 策略而不是合并。但除此之外,您会得到彩色差异、存储、变基、正确处理多个分支、默认情况下正确格式化补丁等等。

如果您已经了解 git,这将为您提供更多,更少烦恼。

【讨论】:

投反对票,因为它你可以从 SVN 和 VisualSVN 获得的东西。 也许有一个客户端实现了它,但这不是 SVN 功能。在 SVN 中,当您需要在不同的分支上工作时,您最终会进行完整的结帐。顺便说一句,VisualSVN 上的“提交此块”功能远非 Git 所做的那样。似乎你必须逐块提交,而在 git 中你可以选择你的更改,然后一次提交。 1) TortoiseSVN 的“提交后恢复”与部分提交不同。 2) Core SVN 目前还没有内置这样的功能,但是本地工作副本中的检查点在 SVN 项目的路线图上,我猜这将使“选择您的更改,然后立即提交”成为可能即将到来的更新。 与此同时,git 拥有一切,甚至更多。我作为 SVN 集成商工作了大约 2 × 1.5 年,在此之前使用 SVN 作为开发人员。我是在git之前学SVN的,但是一旦你学会了使用git,再回到SVN就很痛苦了。 我遇到的痛点尤其是网络参与了大多数操作(需要合并内容但服务器已关闭?回家),缺少存储,svn command line client needing to be worked around 有彩色差异,分页,功能上下文。这就是为什么 git-svn 对于已经了解 git 并且必须使用 svn 的人来说是恕我直言的最佳选择。【参考方案2】:

看起来我可以进行文件级选择,但不能在这些文件中进行更改?

这很容易通过 Visual Studio 2017 的 VisualSVN 插件实现。该功能称为 QuickCommit,它可以帮助您在文件中部分提交选定的更改。

在 Visual Studio 编辑器中使用 Commit this BlockCommit Selection 上下文菜单命令。

这是一个动画截图:

【讨论】:

以上是关于使用 SVN,如何选择性地创建补丁文件?的主要内容,如果未能解决你的问题,请参考以下文章

当使用 svn cp 或 svn mv 时,如何使 svn diff 生成将应用补丁的文件?

如何使用idea合并svn分支

如何利用网盘搭建svn网络服务器

SVN如何使用

如何把项目导入到svn服务器上

SVN工具如何创建分支和合并分支的