svn - 保存部分完成的更改以处理其他更改

标签 svn version-control branching-and-merging

我正处于一个大的变化中(比方说ProjectA),并且必须切换到相同文件的不同项目(ProjectB)。我还不想让我的工作进入trunk,我可能要过几天才能回到ProjectA

设置它的正确方法是什么?我应该创建一个 ProjectA 分支并将部分完成的工作 checkin 其中,然后将我的工作副本切换回 trunk 并在那里处理 ProjectB 吗?

完成后,我该怎么做才能将 ProjectA 合并回 trunk

我对 resolved 冲突很满意,我只需要知道分支、切换和合并的命令......如果我走在正确的轨道上。

目前我们只是在 trunk 中完成所有工作。如果这是问题的一部分,请告诉我。

抱歉,如果这是一个骗局,但我已经尝试了一段时间。

最佳答案

假设在trunk中完成你所有的工作是个好主意,并且假设你不需要来回切换(也就是说,你在ProjectB<上完成工作 在返回 ProjectA 之前),我会执行以下操作:

  • 记录我在 ProjectA 上的工作

    svn diff > ProjectA-WIP.diff
    
  • 处理 ProjectB 然后提交

  • 应用 ProjectA 中正在进行的更改

    patch -Np0 -i ProjectA-WIP.diff
    
  • 确保一切正常

  • 继续处理 ProjectA

我经常遵循同样的程序。假设 Project A 是一个新功能,Project B 是一个 bug 修复;显然我不能将它们混合在同一个提交中,并且我必须在恢复新功能的工作之前修复错误。

如何解决冲突

当冲突不是微不足道的,并且 patch 根本帮不了你的时候,你可以让 svn 用一些技巧来解决你的冲突。

ProjectB 上提交你的工作之后:

  • 在您的工作副本中,返回您针对diff 生成的修订版;它记录在 ProjectA-WIP.diff 中:

    Index: some/src/file.c
    ===================================================================
    --- some/src/file.c (revision NNNN)
    +++ some/src/file.c (working copy)
    
    • 如果您的旧版本是NNNN,只需使用

      svn up -r NNNN
      
  • 应用补丁;这次不会有任何冲突

  • 更新

    svn up
    
  • 借助常用的 Subversion 冲突处理工具解决任何冲突

关于svn - 保存部分完成的更改以处理其他更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505614/

相关文章:

svn - 如何将 SVN 存储库作为文件夹复制到另一个具有历史记录的存储库

c++ - .cpp,v 扩展名的文件

mercurial - 将多个 Mercurial 分支 merge 在一起

git - 维护两个具有固定差异集的 git 分支

.net - 有什么技巧可以使我的项目每次都以全新的结帐方式进行编译?

svn - 分支合并到主干是否被视为关闭?

svn - 是否可以使用 subclipse 恢复失败的结帐?

svn - 使用 Subversion 进行通用备份

performance - Phpstorm 超慢 - 282.8% CPU 使用率

git - 让 git pull --rebase 保留 merge 提交