改变git pull上的mtime

时间:2013-09-28 18:56:14

标签: linux git git-pull filemtime

是否有人知道如何将mtime更改为repo commit time(或任何其他,但取决于提交元数据)以添加/更新文件?

我们有一些逻辑,它测试文件mtime,但后端服务器对已更改的文件有不同的mtime,因此我们有一些错误。

2 个答案:

答案 0 :(得分:0)

假设您在执行git fetch时正在更新/添加文件,您可以创建一个git-rebase-and-touch脚本文件,为您执行rebase以及触摸每个新文件/目录中的所有文件/目录修改

脚本看起来像:

#!/bin/bash

saveIFS=${IFS}
IFS=$'\n'
startrev=$(git rev-parse HEAD)
git rebase
for rev in $(git rev-list --reverse ${startrev}..HEAD); do
    stamp=$(git log --pretty="%aD" ${rev}~..${rev})
    IFS=$'\n'
    for filename in $(git diff --name-only ${rev}~..${rev}); do
        file=""
        IFS='/'
        for part in ${filename}; do
            file=${file}/${part}
            file=${file#/}
            touch -c --date="${stamp}" "${file}"
        done
    done
done
IFS=${saveIFS}

如果您现在使用git pull,请改用git fetch

答案 1 :(得分:-1)

这是一个血腥的危险调整文件时间戳,并且假设你正在这里做一个时间戳意味着不同于它通常意味着什么的东西,这更加危险。任何事情,不仅仅是时间戳,这样做会损害可靠性和可维护性,这使得理解和审计变得困难。文件因合法原因而更改,系统崩溃。

您要检查的时间戳记录在提交元数据中,并且到达它们的效率不够高。切换到提取索引文件或其他一些索引文件的时间戳并在那里检查它们。否则你就会告诉人们学习你的设置,“并不是所有东西都是它的样子”。