我已经在一个分支机构工作了几个月,现在我正在尝试将主干合并到分支中,最后将我的分支合并到主干中。
成功合并一些修订后,SVN抛出了关于“bin”文件夹被锁定的错误。当我创建我的分支时,该文件夹被称为“Bin”,但在这个特定的修订版本中抛出错误,另一个开发人员无意中提交了一个名为“bin”的重复目录。在合并期间,SVN试图关闭新的“bin”,但是Windows拒绝了,抛出了锁定错误。
我的问题是如何处理这个问题?虽然有问题的项目经历了很多变化,包括删除Bin,删除bin,并最终添加了Bin,但是当我从trunk到我的分支合并修订时,我必须重放所有这些操作。如何在过去发生错误时通过错误?我是否进入Repo Browser并删除旧版本中的重复“bin”文件夹?这非常令人沮丧,因为当其他开发人员检查了重复目录时,这不是错误,但是在尝试将该修订合并/更新到我的工作副本时会导致错误。
另外,我应该在将每个修订合并到我的分支后提交吗?或者我是否可以在最后继续合并并提交我的分支?
感谢您提供的任何帮助。
答案 0 :(得分:2)
您无需按修订版合并修订版。您可以将分支/主干的所有更改合并到另一个分支/主干中。
如果这无法解决重命名困境(我自己就在那里),我知道有两种方法可以解决这个问题:
svn copy
新文件夹移到其位置。不幸的是,在Windows上,您无法一步到位。 但是,在Windows上,当您尝试更新具有Bin
文件夹的工作副本并且更新需要删除该文件并在该文件夹中创建bin
文件夹时,您将遇到麻烦同一时间。您可以通过手动删除工作副本中的违规文件夹(无svn delete
!)然后让svn up
恢复它,或者只是删除该工作副本并重新签出来解决此问题。如果您从上面做#2,您也可以先更新到中间版本(删除旧文件夹的位置),然后再更新到头部。
编辑 我现在才看到您的其他问题:
我应该在将每个修订合并到我的分支后提交吗?或者我是否可以在最后继续合并并提交我的分支?
根据经验:每当您在工作副本中执行操作时,您需要稍后提交此操作以使其显示在存储库中。在存储库上执行操作时,它会自动创建新的存储库版本,您无需签入。 (然后您应该使用该命令提供签入注释。)特别值得了解的是可以使用工作副本或存储库作为目标的表彰(如svn copy
)。
答案 1 :(得分:0)
好的,所以要解决这里的问题..我想我建议尝试将所有更改合并到违规修订版,然后自行合并错误修订版,看看是否有帮助。当您遇到树冲突错误时,您可以手动修复,解决冲突,然后合并剩余的修订。
另一种方法可能是在你启动分支的同一点从trunk创建一个新的分支,然后签出trunk的HEAD修订版并提交,然后将它(单个修订版)合并到你的分支,这样你就可以得到所有的没有中间问题的变化。然后你可以更新你的mergeinfo属性,告诉你的分支你已经合并了trunk的所有修订版本,所以下次不会尝试合并它们。有点软糖,但它可能会让你有些头疼。
一般来说,这样的问题可以通过理解svn merge如何工作来解决,树冲突是一种麻烦但是一旦你得到它们,它们就很容易修复。你所描述的听起来像是一场树冲突,但如果你得到一个不同的错误,请告诉我们。