14

我对文件进行了一些更改,但意识到我需要以其他方式对其进行修改——这需要我将当前的更改临时保存在其他地方并稍后应用。我如何在 svn/subversion 工具中做到这一点,例如 TortoiseSVN?

我提到的功能与shelveset在 TFS 中制作和取消搁置它非常相似。

如果你知道怎么做,请帮忙。谢谢!

4

4 回答 4

16

AntonyW 的答案有效,但它可能有点矫枉过正,特别是如果你有很多代码!

我对 TFS' 不熟悉,shelveset但 svn 给你svn diff命令来做你正在寻找的东西:制作一个差异并保存它,以便你以后可以应用它。只需将svn diff' 的输出保存在 .patch 或 .diff 文件中即可。

svn diff myfile > myfile.patch

由于您使用的是 TortoiseSVN,这更容易做到

于 2011-06-16T17:11:43.720 回答
4

您还可以使用您的更改创建分支。它甚至比将差异存储在磁盘上更好。


编辑:所以你在工作副本中有不同类型的变化?您要保留的文件和要保存到差异的文件?在这种情况下,从 TortoiseSVN 创建补丁可能会更好。

但是,如果您想从工作副本中修补所有更改,我认为创建分支更好。这在 Tortoise 中非常简单:

  1. 创建分支/标签并将工作副本标记为分支的来源(不要选中以切换到新分支)。
  2. Tortoise 创建分支后恢复所有本地更改
  3. 进行另一项更改
  4. 提交到主干
  5. 从主干切换到分支并合并更改
  6. 将分支重新集成到主干

对于舒尔来说,它在大多数情况下都对我有用,补丁有利于代码审查,而不是创建未完成更改的本地工具集;)

于 2011-06-16T19:06:09.710 回答
1

关于给出的上述答案,我(个人)不同意他们(大量等......)。至于我(我也在使用它),这是目前只有团队基础支持并且可以跨网络使用的好功能之一。这在以下情况下很有帮助:

  1. 首先也是最突出的一点是,您无需在主源代码中签入(且不完整)代码即可获得其他人的评论。
  2. 如果您有多个解决方案,您可以拥有多个可以在应用程序中测试的搁置集。
  3. 如果另一个人在签入之前需要您的某个搁置集用于部分测试目的,那么它是可用的。

我搜索了这个功能,发现其他大多数产品(SVN,mercurial)将来都会引入这个功能,但现在还没有。

……请求宽恕总比请求许可好……

于 2013-10-08T14:02:06.423 回答
0

我通常会结帐到一个新位置,在那里进行更改然后提交。

稍后,我对原始位置进行更新,以将更改合并到我之前修改的版本中。

于 2011-06-16T15:54:25.583 回答