我很想知道更多关于不同的版本控制系统如何跟踪存储库中的重命名文件,特别是在合并的情况下。在这个问题上,比较Git、SVN和Mercurial的文件重命名策略,有人发表了一篇作者的博文,声称Bazaar的文件重命名策略比任何其他VCS都要健壮得多。作者指出,Bazaar"将重命名视为一流的操作"。
作者没有解释的是这是如何工作的,将重命名作为一级操作意味着什么,以及为什么它的策略比Git的"最佳猜测"更好。重命名检测算法。
我没有芭莎的经验,但我想知道:
- 如何处理文件重命名?
- 是什么让它的算法比其他流行的VCS更可靠(如果有的话)?
我在Bazaar自己的文档中找不到这些信息。
引言
Bzr已死
2007年没有事实的文字只是一坨屎
脸
在bzr或hg中,您有两个东西:文件对象(在重命名时不更改)和文件名(在重命名时更改)。两个应用程序都保留了这些信息,但不同之处在于实现。hg中文件对象的主存储取决于文件名(如果前一个文件对象没有相同的文件名,则指向前一个文件对象的指针,即一对(filename, revision))。在bzr中,文件对象直接存储在磁盘上。
来源:https://www.markshuttleworth.com/archives/123评论- 110483
答案
- Bzr记录(ed)在repo中重命名为单个事务"重命名",在hg中它(仍然)"删除"+"添加",也记录在revlog中并给出相同的结果:每个对象的整个历史的可追溯性)
- 2022年Bzr的更名不是"更可靠"比Hg更好,但Git的猜测(只是因为每次猜测而不是记录事件在边缘情况下可能是错误的)
简历
在2022年,你没有理由更喜欢Bzr(或它的继任者Breezy)或Darcs或Pijul而不是Hg pure,因为重命名的可能性