保存我的工作以供日后使用并恢复为HEAD修订版

时间:2015-02-19 14:17:35

标签: svn

我知道这可能是关于SVN的一个非常基本的问题,但很难用很少的单词来搜索它。

让我们说我正在处理#2015的机票,我必须在文件index.htmlapp.js中进行更改,但由于某种原因,这张机票现在受阻了,我正在等待一些事情,所以我可以继续努力。

所以为了不闲着,现在我将开始处理机票#2047,我们会说,这将包括对文件blue-theme.cssindex.html的更改。

假设我正在使用Subversion,这是我可以使用的最合适的操作,不会丢失我在#2015上的工作,但也不会将这些更改提交到文件index.html如果它们属于机票#2047

2 个答案:

答案 0 :(得分:2)

Subversion的方式是为每张票创建一个分支。一旦您确信您的故障单已关闭,您就会从trunk到故障单分支进行最终合并,对其进行测试,然后将分支合并回trunk

示例

假设您的仓库中有以下设置:

^/trunk
^/branches

trunk成为您的稳定"您在分支中执行错误修复时的存储库(使用Subversion的常见工作流模式)。然后,问题的情况可以按如下方式处理:

  1. 为故障单2015创建分支:svn cp path/to/repo/trunk path/to/repo/branches/ticket-2015
  2. 查看门票分支:svn co path/to/repo/branches/ticket-2015
  3. 在您的工作副本ticket-2015中处理问题2015并根据需要提交。
  4. 通过为其创建新分支,开始处理故障单2047:svn cp path/to/repo/trunk path/to/repo/branches/ticket-2047; svn co path/to/repo/branches/ticket-2047
  5. 在某些时候,你对2047年的工作感到满意,你决定重新融入:
    • 您从trunk:[{1}}
    • 进行最终合并
    • 您检查一切是否仍然有效
    • 您通过查看cd ticket-2047; svn merge ^/trunk; svn commit的工作副本,合并您的分支并提交它来重新整合:trunk
  6. 重新整合分支后,您可以将其从回购中删除(不用担心,历史记录当然会被保留,从svn中删除 ):{{ 1}}
  7. 您继续使用相同的方法2015
  8. 遵循这种方法你有一些好处:

    • 在一个问题上与多人合作很容易
    • 很容易进行自动测试(如果你为它设置了系统)
    • 任何一张门票的更改都没有丢失,
    • 两张票之间不会有任何混淆

答案 1 :(得分:0)

最简单的选项:创建新的工作副本。只需svn checkout您的项目到新位置,保留旧工作副本及其未提交的所有工作,并在新工作副本中执行新工作单。

您可以通过使用普通文件系统命令(不是svn copy)将工作副本复制到新位置,然后在新位置使用svn revert来丢弃正在进行的新工作中的工作来完成同样的事情副本。

高级选项:如果您不想要两个工作副本,可以使用svn diff(或在TortoiseSVN中,“查看统一差异”)导出所有修改的文本差异。将其保存到文件,然后还原所有更改。稍后,当您完成第二张票并想要从第一张票中恢复更改时,请使用svn patch命令从diff文件中重新应用更改。