搁置在TortoiseSVN?

时间:2008-08-12 05:25:21

标签: svn tortoisesvn

我和我现在的公司从TFS搬到了SVN(TortoiseSVN)。我真的很想念TFS的“搁架”功能。我已经阅读过有关如何“搁置”SVN的各种文章,但我没有读过任何可以“搁置”工作的简单经验。

理想情况下,我想在TortoiseSVN上下文菜单中添加额外的项目 - “Shelve”& “取消搁置”。 “Shelve”将删除当前的搁置集,并将工作目录上载到由用户选项定义的合适路径下。 “Unshelve”会将该集合与工作副本合并。

这样的事情存在吗?任何人都可以建议任何方法在GUI中“破解”这个功能吗?

注意:以下链接并未真正实现我所寻求的用户体验:

Shelving Subversion

TFS Shelve最大的优点之一就是使用它是多么容易......

7 个答案:

答案 0 :(得分:29)

我不相信SVN在服务器产品中内置了此功能。我也不相信在我使用过的任何客户中都会模仿这样的东西,包括TortoiseSVN。

为了解决这个问题,我已经使用了诸如GitMercurial之类的DVCS,允许我在将内容推送回SVN之前在本地分支/合并/搁置。它可以说有点像kludge,但效果确实很好。

答案 1 :(得分:15)

如果您了解SVN分支机构的工作方式,那么在SVN中模拟Shelve是一个明智的选择:

  1. 在存储库中创建分支(在服务器上)
  2. 将本地副本切换为
  3. 将更改提交给新分支
  4. 将本地副本切换回主干
  5. 当您准备好回到搁置的更改(“取消搁置”)时,只需将搁架分支合并回本地副本即可。

    如果您不熟悉命令行SVN和Tortoise SVN以及上述内容,这里有一个关于如何在Tortoise SVN中执行此操作的详细分步说明:

    1. 执行“SVN更新”以将您的工作副本更新到最新版本的中继。这样,您的本地副本和主干之间的唯一区别就是您的更改。
    2. 从上下文菜单中选择“分支/标记”
    3. 默认情况下选择“存储库中的HEAD版本”选项。保持这一点。
    4. 更改“To Url”以指定分支名称,例如http://server/repository/project1/branches/shelf1
    5. 选中“将工作副本切换到新分支/标签”框
    6. 单击“确定”以创建分支并切换到该分支
    7. 执行“SVN Commit ...”并将更改提交给新创建的分支
    8. 从上下文菜单中选择“切换...”
    9. 将“To URL”更改为中继网址,例如http://server/repository/project1/trunk
    10. 单击“确定”切换回主干
    11. 有关更多详细信息和上述命令行等效内容,请参阅此链接:
      Shelves in Subversion

答案 2 :(得分:12)

SVN中的搁置开始推出版本1.10,请参阅Release Notes

答案 3 :(得分:8)

另一种选择是使用TortoiseSvn中的“创建补丁”工具来创建补丁文件并还原更改。稍后可以重新应用补丁文件以返回原来的位置。

如果您必须更新工作副本修订版,您可能仍然会遇到一些粘性合并。

答案 4 :(得分:7)

答案 5 :(得分:2)

SVN已升级了货架 https://subversion.apache.org/docs/release-notes/1.11.html#shelving

  

您可以搁置的更改类型是对文件的可提交更改   和属性,以下几种除外   支持:

     
      
  • 复制并移动
  •   
  • 创建和删除目录
  •   

答案 6 :(得分:1)

你可以使用DVCS,但在某种程度上这是一个kludge。 DVCS中的“搁置”仅在本地存储您的更改。只有当你想要通过进一步的工作来破解你的工作时,它才有用,但最好是你想要在服务器上保存你的工作。

在没有明确搁置命令的情况下在SVN中执行此操作的一种方法是将工作副本切换到不同的svn位置并在那里提交而不是在主repo上。这实际上就像创建一个临时分支并在工作期间一起工作。我不认为你甚至不得不合并,因为当你切换时SVN会为你做这件事,因为你的本地修改将被保留。

不幸的是,您无法切换到不存在的位置,因此第一次执行此操作时,您必须创建要搁置的“分支”。我想整件事情都可以实现自动化。