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

thcjp 阅读:28 2025-01-19 22:14:33 评论:0

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

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

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

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

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

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

请您参考如下方法:

假设在trunk中完成你所有的工作是个好主意,并且假设你不需要来回切换(也就是说,你在ProjectB <上完成工作< code> 在返回 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
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号