Svn 删除所有mergeinfo是在保留历史的同时重新开始的可行方法吗?
我在一个使用SVN维护我们网站代码的团队中工作。该团队已经使用SVN好几年了,但最近对SVN实践进行了彻底的改革,现在的操作方式略有不同 作为背景资料:Svn 删除所有mergeinfo是在保留历史的同时重新开始的可行方法吗?,svn,tortoisesvn,Svn,Tortoisesvn,我在一个使用SVN维护我们网站代码的团队中工作。该团队已经使用SVN好几年了,但最近对SVN实践进行了彻底的改革,现在的操作方式略有不同 作为背景资料: trunk自动部署到生产环境中,这意味着它必须始终保持干净 dev是解决大多数错误修复、小调整和小(1页)功能的地方 xxx-dev我们还有其他几个分支用于更广泛的功能开发,它们都被命名为xxx-dev,其中xxx是功能的名称 每天,同步合并都会从主干运行->所有其他分支。这有点乏味,但可以使我们的分支与trunk中的分支保持同步,同时最大限
自动部署到生产环境中,这意味着它必须始终保持干净trunk
是解决大多数错误修复、小调整和小(1页)功能的地方dev
我们还有其他几个分支用于更广泛的功能开发,它们都被命名为xxx-dev,其中xxx是功能的名称xxx-dev
- 每天,同步合并都会从
->所有其他分支。这有点乏味,但可以使我们的分支与主干运行
中的分支保持同步,同时最大限度地减少同步时必须解决的冲突数量。每天都有不同的人将更改部署到主干上,因此有必要使所有分支保持最新。我使用乌龟,并将修订范围框留空,以便将所有未合并的修订合并到来自trunk
主干的分支中
trunk
中新的代码副本,通过复制新的trunk
重新创建我们的所有分支,然后继续进行,但在我们开始进行每日同步之前没有任何错误的合并历史记录
我的问题:要执行我所描述的操作,我们是否应该对整个主干
目录递归删除svn:mergeinfo属性?那会引起什么问题吗?我相信,由于trunk
位于存储库的根目录下,如果出于某种原因需要,我们仍然能够查看旧的合并历史
如果我错了,或者我们的SVN政策有问题,也请告诉我
谢谢大家!
编辑:我应该提到我看到的冲突恰好发生在
svn:mergeinfo
属性本身上。。。因此,有一个错误的合并正在修改svn:mergeinfo
我不知道团队中的任何人如何或为什么会意外删除此目录的svn:mergeinfo
属性,但这次似乎导致所有问题的更改是一个已删除的svn:mergeinfo
属性
此已删除的svn:mergeinfo
位于子目录中,而不是分支的根目录
要执行我所描述的操作,我们是否应该在整个主干目录上递归删除svn:mergeinfo属性
是的,你能做到。您将丢失所有mergeinfo(当然),但之后,事情应该会顺利进行,直到下一次有人做一些“花哨”的事情(比如做子树合并,这可能是所有问题的入口)
那会引起什么问题吗
好吧,如果你找到一种合理的方法来重新创建所有分支(基本上,你必须从干净的主干创建新的分支,并手动将原始分支中的所有更改合并到它们的替换项中)
但是,我认为至少有两个选择,你也应该考虑:
svn:mergeinfo
属性。如果只是一组旧合并(错误地)从主干合并到分支,为什么不手动修改主干/分支中的mergeinfo属性(或者使用--record only
标志使Subversion为您执行此操作)git
,尽管我知道这对每个人来说都不是最好的选择(甚至不是可行的选择)
编辑
对于问题中的编辑:如果您只在子树mergeinfo方面有问题,那么解决方案就更简单了:假设您的所有分支都是主干的副本(而不是子树分支),只需继续删除存储库中所有子树(包括主干)的所有svn:mergeinfo
属性
我们必须做一次完全相同的事情:基本上,我们签出了完整的存储库,手动(或编写脚本)删除除主干和分支根之外的所有文件夹的
svn:mergeinfo
属性,然后再次提交。之后,就没有问题了:)我真的很想修复MergeInfo,但我不能100%确定它到底出了什么问题。我不相信我所做的更改以后不会导致奇怪的合并问题。错误地处理合并信息会不会导致以后的合并损坏文件或进行我们没有做的更改?我更新了我的que