理想情况下,我想将其他项目添加到TortoiseSVN上下文菜单中-"搁置"我不"/>

关于svn:在TortoiseSVN中使用?

关于svn:在TortoiseSVN中使用?

Shelve in TortoiseSVN?

我现在的公司已经从TFS迁移到SVN(TortoiseSVN)。我真的很想念TFS的"搁置"功能。我已经阅读了有关如何"搁置" SVN的各种文章,但是我没有阅读任何有关"搁置"工作的非常简单的经验。

理想情况下,我想将其他项目添加到TortoiseSVN上下文菜单中-"搁置"


我不认为SVN会在服务器产品中内置此功能。我也不相信在我使用过的任何客户端(包括TortoiseSVN)中都可以模拟这样的事情。

为解决此问题,我不得不使用DVCS(如Git或Mercurial)来允许我在将内容推回SVN之前在本地分支/合并/搁置。可以说有点纠结,但效果确实很好。


在SVN中开始在1.10版中发布,请参见发行说明


如果您了解SVN分支的工作方式,那么在SVN中模拟Shelve无疑是很容易的事情:

  • 在存储库中(在服务器上)创建一个分支
  • 将您的本地副本切换到它
  • 将更改提交到新分支
  • 将您的本地副本切换回主干
  • 当您准备好恢复已搁置的更改("取消搁置")时,只需将货架分支合并回本地副本即可。

    如果您对命令行SVN或Tortoise SVN不够了解,无法完成上述操作,则以下是有关如何在Tortoise SVN中进行操作的详细说明:

  • 执行" SVN更新"以将您的工作副本更新为最新版本的主干。这样,您的本地副本和主干之间的唯一区别就是更改。
  • 从上下文菜单中选择"分支/标签"
  • 默认情况下,选择"存储库中的HEAD版本"选项。保持那个。
  • 更改" To Url"以指定分支名称,例如http://server/repository/project1/branches/shelf1
  • 选中"将工作副本切换到新的分支/标签"框
  • 单击确定创建分支并切换到该分支
  • 执行" SVN提交...",然后将更改提交到新创建的分支
  • 从上下文菜单中选择"切换..."
  • 将" To URL"更改为中继URL,例如http://server/repository/project1/trunk
  • 单击确定以切换回主干
  • 有关更多详细信息和上述命令的等效命令行,请参见此链接:
    Subversion中的货架


    TortoiseSVN 1.10现在支持shelving:https://tortoisesvn.net/docs/nightly/TortoiseSVN_zh/tsvn-dug-shelving.html


    另一个选择是使用TortoiseSvn中的"创建补丁"功能来创建补丁文件并还原更改。以后可以重新应用补丁文件以返回到您所在的位置。

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


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

    The kinds of change you can shelve are committable changes to files
    and properties, except the following kinds which are not yet
    supported:

    • copies and moves
    • creating and deleting directories

    您可以使用DVCS,但从某种意义上讲这是一种麻烦。 DVCS中的"搁置"仅将更改存储在本地。仅当您希望在进一步的工作中破坏工作以使其回滚时才有用,但是最好将其保存在服务器上。

    在SVN中无需显式搁置命令即可执行此操作的一种方法是将工作副本切换到其他svn位置,然后在此处提交而不是在主仓库中提交。这实际上就像创建一个临时分支,并在您的工作期间继续进行工作。我认为您甚至不必合并,因为在您切换时SVN会为您完成,因为您的本地修改将被保留。

    不幸的是,您无法切换到不存在的位置,因此,第一次执行此操作时,您将不得不创建要搁置的"分支"。我想整个事情可以自动化。


    推荐阅读