使用 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 Block 和 Commit Selection 上下文菜单命令。
这是一个动画截图:
【讨论】:
以上是关于使用 SVN,如何选择性地创建补丁文件?的主要内容,如果未能解决你的问题,请参考以下文章