我在项目中使用的唯一分布式修订控制系统是 bazaar。除了如何结账外,我对 git 和 mercurial 了解不多。我喜欢 bazaar 的原因是 automv 插件。它检测我何时手动移动/删除文件(从命令行/ide等),当我赶时间时,我倾向于做很多事情。但是 bazaar 真的很慢,我正在考虑转向 git。git 有类似这个功能的东西吗?
Vasil
问问题
350 次
3 回答
8
Git 在移动/重命名情况下的工作方式是完全不同的。Git 只跟踪内容,因此它知道文件 X 在一次提交时具有 SHA1 哈希值,而文件 Y在下一次提交时abc123...
恰好具有相同的哈希值。abc123...
因此,Git 工具在查看历史记录或其他内容时会得出结论,文件 X 必须在此时重命名为文件名 Y。
通过这种方式,Git 重构了从一个提交到下一个提交所采取的操作,而无需在提交时掌握这些知识。它可以事件检测您重命名文件并更改文件中某些内容的情况(当然,它不是通过比较 SHA1 哈希值来做到这一点,而是通过在提交中更改的文件之间进行文本比较)。
于 2008-12-23T07:47:08.287 回答
2
于 2008-12-23T15:11:49.683 回答
1
仅供参考,只有集市知道动作。SVN、Git、hg 只知道带版本的复制和删除。我认为那是不同的。但正如之前提到的,git 很好地处理了 automv(据我所知),只有在移动后非常聪明才能快速提交。我听说 egit 在你重命名一个类后会自动提交。
于 2010-09-11T18:54:55.100 回答