2

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

但是,如何使目录的 mtime 显得直观、确定和一致?

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

4

2 回答 2

3

因此,事实证明,脚本很容易修改以支持具有确定性 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
于 2013-01-30T07:46:31.157 回答
1

用 git 能轻松搞定吗

这与 Git(或其他分布式VCS)无关,它根本不记录任何类型的时间戳

因此,尽管您的策略在您的上下文中有意义,但它只是脚本的结果,应用在您的本地存储库中,不能保证在其任何克隆中复制。

于 2013-01-30T07:45:38.930 回答