我和我现在的公司从TFS搬到了SVN(TortoiseSVN)。我真的很想念TFS的“搁架”功能。我已经阅读过有关如何“搁置”SVN的各种文章,但我没有读过任何可以“搁置”工作的简单经验。
理想情况下,我想在TortoiseSVN上下文菜单中添加额外的项目 - “Shelve”& “取消搁置”。 “Shelve”将删除当前的搁置集,并将工作目录上载到由用户选项定义的合适路径下。 “Unshelve”会将该集合与工作副本合并。
这样的事情存在吗?任何人都可以建议任何方法在GUI中“破解”这个功能吗?
注意:以下链接并未真正实现我所寻求的用户体验:
TFS Shelve最大的优点之一就是使用它是多么容易......
答案 0 :(得分:29)
我不相信SVN在服务器产品中内置了此功能。我也不相信在我使用过的任何客户中都会模仿这样的东西,包括TortoiseSVN。
为了解决这个问题,我已经使用了诸如Git或Mercurial之类的DVCS,允许我在将内容推送回SVN之前在本地分支/合并/搁置。它可以说有点像kludge,但效果确实很好。
答案 1 :(得分:15)
如果您了解SVN分支机构的工作方式,那么在SVN中模拟Shelve是一个明智的选择:
当您准备好回到搁置的更改(“取消搁置”)时,只需将搁架分支合并回本地副本即可。
如果您不熟悉命令行SVN和Tortoise SVN以及上述内容,这里有一个关于如何在Tortoise SVN中执行此操作的详细分步说明:
http://server/repository/project1/branches/shelf1
http://server/repository/project1/trunk
有关更多详细信息和上述命令行等效内容,请参阅此链接:
Shelves in Subversion
答案 2 :(得分:12)
SVN中的搁置开始推出版本1.10,请参阅Release Notes
答案 3 :(得分:8)
另一种选择是使用TortoiseSvn中的“创建补丁”工具来创建补丁文件并还原更改。稍后可以重新应用补丁文件以返回原来的位置。
如果您必须更新工作副本修订版,您可能仍然会遇到一些粘性合并。
答案 4 :(得分:7)
TortoiseSVN 1.10
现在支持shelving
:https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-shelving.html
答案 5 :(得分:2)
SVN已升级了货架 https://subversion.apache.org/docs/release-notes/1.11.html#shelving
您可以搁置的更改类型是对文件的可提交更改 和属性,以下几种除外 支持:
- 复制并移动
- 创建和删除目录
答案 6 :(得分:1)
你可以使用DVCS,但在某种程度上这是一个kludge。 DVCS中的“搁置”仅在本地存储您的更改。只有当你想要通过进一步的工作来破解你的工作时,它才有用,但最好是你想要在服务器上保存你的工作。
在没有明确搁置命令的情况下在SVN中执行此操作的一种方法是将工作副本切换到不同的svn位置并在那里提交而不是在主repo上。这实际上就像创建一个临时分支并在工作期间一起工作。我不认为你甚至不得不合并,因为当你切换时SVN会为你做这件事,因为你的本地修改将被保留。
不幸的是,您无法切换到不存在的位置,因此第一次执行此操作时,您必须创建要搁置的“分支”。我想整件事情都可以实现自动化。