我正处于一个较大的更改(例如ProjectA)的中间,必须将齿轮切换到同一文件(ProjectB)上的另一个项目。我还不希望我的工作进入trunk,可能要过几天才能回到ProjectA

进行此设置的正确方法是什么?我是否应该创建一个ProjectA分支并将其部分完成的工作签入其中,然后将我的工作副本切换回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是一个错误修复;显然,我不能将它们混入同一提交中,并且必须先修复该错误,然后才能继续使用新功能。

    如何解决冲突

    当冲突并非微不足道,并且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/

    10-13 05:35