使用bzr pull
时,文件的时间戳变为"现在" (选项1),而不是将原始时间戳保留在仓库中(选项2)。
选项1的缺点:
应该相同的文件会有所不同(即使仅在修改时间内)。这些差异可能会传播"跨拉/提交/等。它们会污染包中文件的实际修改时间记录。
构建系统(如make),它使用某些文件的修改时间(先决条件)来评估制作其他文件(目标)的需要,
可能无法正常工作。
具有" old"的文件的情况时间戳被拉动,构建系统忽略了正确的构建,而它不应该,可能表示配置不正确的构建过程,或make clean
make
之前的需要(这应该是用户的责任)。
我没有看到任何改变源文件的情况(即使只是它的时间戳)以避免需要make clean
很方便。
时间戳是存储库中文件的时间戳是否有用? (选项2;类似问题适用于bzr commit
)
原则上,我会说是,但是应该有一个很好的理由让集市像它一样工作(我只是看不到它)。
<小时/> 的修改: 接受的答案在这里完全提到了第2点 (我也发布了一个彻底的答案)。 我之前看到这是一个配置不良的构建系统的症状。 但是现在我发现使用当前工具无法按照我认为它应该工作的方式配置构建系统。 使用原始时间戳,每个
make clean
将强制pull
,从而重建所有目标。
使用&#34;现在&#34;作为时间戳,至少让系统根据已更改的先决条件仅重建目标。但我仍然认为这是最不具破坏性的&#34;选项,而真正的目标应该是两种方式:1)根据已更改的先决条件仅重建目标,2)保持文件内容的真正修改时间跨副本。
答案 0 :(得分:1)
Bazaar并不是唯一一个表现得像这样的人;据我所知,所有版本控制系统的工作都是这样的。
在这里使用当前时间是正确的,因为构建系统不知道版本控制历史记录 - 它只知道目录时间。在工作树的上下文中,该文件 实际上是新的。
想象一下,有一个构建目标依赖于源文件B的情况,该源文件B使用如下时间轴检入Bazaar:
答案 1 :(得分:0)
有一个简单的理由现在使用而不是记录时间:构建系统(如make)可以简单地发现文件已更改并根据该文件重建工件。
答案 2 :(得分:0)
理想情况下,当使用Version control(VC)和 bazaar (版本控制系统,VCS)等软件时,可以:
bzr pull
)时重建。
这很重要,因为VCS的典型用途是:软件开发。
引自Wikipedia:
组织和控制修订的逻辑方法的需要几乎与写作已经存在一样......今天,最有能力(以及复杂)的修订控制系统是用于软件开发的系统,...
目前使用bzr
(以及任何其他VCS?),人们无法获得这三种。
一个人可以得到(1 + 2)
使用原始时间戳,并对每make clean
执行pull
(或类似),从而重建所有目标而不是仅重建几个目标。
另一方面,
一个人可以得到(2 + 3)
使用“now”作为时间戳。
(1 + 3)既不可能也不感兴趣。
bzr
(以及所有其他VCS?),考虑到软件开发,让(2 + 3)占上风,放弃第1点。
所以,会有用吗?
是的,但可能还不足以对抗其他便利点。
请参阅Version Control System that keeps original timestamps?
PS:这总结了其他答案,特别是OP的 EDIT ,以回答具体问题。