我和我现在的公司从TFS搬到了SVN(TortoiseSVN).我真的很想念TFS的"搁架"功能.我已经阅读了有关如何"搁置"SVN的各种文章,但我没有读过任何可以"搁置"工作的非常简单的经历.
理想情况下,我想在TortoiseSVN上下文菜单中添加额外的项目 - "Shelve"和"Unshelve"."Shelve"将删除当前的搁置集,并将工作目录上载到由用户选项定义的合适路径下."Unshelve"会将该集合与工作副本合并.
这样的事情存在吗?任何人都可以建议任何方法在GUI中"破解"此功能吗?
注意:以下链接并未真正实现我所寻求的用户体验:
搁置颠覆
关于TFS Shelve最大的好处之一就是它的易用性......
我不相信SVN在服务器产品中内置了此功能.我也不相信在我使用的任何客户中仿效的任何东西,包括TortoiseSVN.
为了解决这个问题,我已经使用了诸如Git或Mercurial之类的DVCS ,允许我在将内容推送回SVN之前在本地分支/合并/搁置.它可以说有点像kludge,但它的效果非常好.
SVN中的搁置开始推出版本1.10,请参阅发行说明
如果您了解SVN分支机构的工作原理,那么在SVN中模拟Shelve是一个明智的选择:
在存储库中创建分支(在服务器上)
将本地副本切换到它
将更改提交给新分支
将本地副本切换回主干
当您准备好回到搁置的更改("取消搁置")时,只需将搁架分支合并回本地副本即可.
如果您不熟悉命令行SVN和Tortoise SVN以及上述内容,这里有一个关于如何在Tortoise SVN中执行此操作的详细分步说明:
执行"SVN更新"以将您的工作副本更新到最新版本的中继.这样,您的本地副本和主干之间的唯一区别就是您的更改.
从上下文菜单中选择"分支/标记"
默认情况下选择"存储库中的HEAD版本"选项.保持这一点.
更改"To Url"以指定分支名称,例如 http://server/repository/project1/branches/shelf1
选中"将工作副本切换到新分支/标记"框
单击"确定"以创建分支并切换到该分支
执行"SVN Commit ..."并将更改提交给新创建的分支
从上下文菜单中选择"切换..."
将"To URL"更改为中继URL,例如 http://server/repository/project1/trunk
单击"确定"切换回主干
请参阅此链接以获取更多详细信息以及上述命令行等效项:
Subversion中的货架
TortoiseSVN 1.10
现在支持shelving
:https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-shelving.html
另一种选择是使用TortoiseSvn中的"创建补丁"工具来创建补丁文件并还原更改.稍后可以重新应用修补程序文件以返回原来的位置.
如果您必须更新工作副本修订版,您仍可能最终得到一些粘性合并.