当使用bzr pull时,文件的时间戳变为“立即”(选项1),而不是将原始时间戳保留在回购(选项2)中。
备选案文1的缺点:
make clean之前需要使用make (这应该是用户的责任)。我不认为修改源文件(即使只是它的时间戳)以避免对make clean的需要是方便的。,如果时间戳是存储库中文件的时间戳,会有用吗?(选项2;类似的问题适用于bzr commit**)** )。
原则上,我会说是的,但应该有一个很好的理由让集市像它那样工作(我只是没有看到它)。
编辑:被接受的答案在这里准确地暗示了第2点(我也发布了一个完整的答案)。我以前认为这是一个配置不当的构建系统的症状。但现在我看到,没有办法配置一个构建系统的方式,我认为它应该工作,用现有的工具。使用原始时间戳,将强制每个pull都使用pull,从而重建所有目标。使用"now“作为时间戳,至少可以让系统根据更改的先决条件只重建目标。但我仍然认为这是“损害最小”的选项,而真正的目标应该是两种方式: 1)根据改变的先决条件只重建目标,2)保持跨副本的文件内容的真正修改时间。
发布于 2018-04-27 18:56:17
Bazaar并不是唯一这样的人;据我所知,所有的版本控制系统都是这样工作的。
在这里使用当前时间是正确的,因为构建系统不知道版本控制历史-它只是知道目录时间。在工作树的上下文中,该文件实际上是新文件。
假设有一个构建目标依赖于一个源文件B,该源文件被签入Bazaar,时间线如下:
发布于 2018-02-19 08:03:33
现在使用而不是记录的时间有一个简单的原因:构建系统(如make)可以简单地发现文件被更改,并根据该文件重新构建工件。
发布于 2018-04-28 11:00:05
理想情况下,在使用版本控制 (VC)时,使用像bazaar (版本控制系统)这样的软件时,可以:
bzr pull)后进行重建。这一点很重要,因为VCS的典型使用是:软件开发。引用维基百科的话:
有必要有一种逻辑的方法来组织和控制修订已经存在了几乎只要书面已经存在.今天,最有能力(也是最复杂)的修订控制系统是那些在软件开发中使用的,.使用bzr (以及其他VCS?)以目前的形式,一个人不能得到这三个。
可以使用原始时间戳获得(1+2),并对每个pull执行make clean (或类似的操作),从而重建所有目标,而不仅仅是少数目标。另一方面,可以使用"now“作为时间戳(2+3)。(1+3)既不可能,也不有趣。
bzr (和所有其他VCS?),考虑到软件开发,让(2+3)占上风,放弃点1。
那么,会有用吗.?
是的,但可能不足以对付其他方便点。
PS:这总结了其他答案,特别是我的编辑OP的,使之成为对特定问题的答案。
https://stackoverflow.com/questions/48119524
复制相似问题