使用git存储库确定性目录mtime

时间:2013-01-30 06:03:41

标签: git filemtime

使用git-restoremtime脚本,可以根据提交消息中的日期修改从git存储库检出的文件的修改时间。

但是,如何使目录的mtime看起来直观,确定且一致?

我认为每个目录最有意义的是将其mtime设置为最新提交的时间,触及此目录或其任何子目录中的任何类型的文件。这种递归的mtime传播听起来合理吗?用git很容易吗?

2 个答案:

答案 0 :(得分:2)

事实证明,脚本很容易修改,以支持为目录确定mtime。

https://github.com/cnst/git-tools/commit/89d09da9f362651ce9a0ca66362913c09e6b57cb https://github.com/cnst/git-tools/commit/b20207dc8fd9b791b8371dab94e98aca0a8412f6

https://stackoverflow.com/a/13284558/1122270集成的最短片段如下:

dirlist = dict()
...

        dir = file
        while dir:
            dir = os.path.dirname(dir)
            if dir in dirlist:
                if dirlist[dir] < mtime:
                    dirlist[dir] = mtime
            else:
                if os.path.isdir(dir):
                    dirlist[dir] = mtime
...

for file, mtime in dirlist.iteritems():
    try:
        os.utime(os.path.join(workdir, file), (mtime, mtime))
        touches += 1
    except Exception as e:
        logger.error("ERROR: %s\n", e)
        errors += 1

答案 1 :(得分:1)

  

使用git

是否容易

这与Git(或其他分布式 VCS)无关,只需doesn't record any kind of timestamp

因此,虽然您的策略在您的上下文中是有意义的,但它只会是在本地存储库中应用的脚本的结果,并不保证可以在任何克隆中复制。