linux - 更改 git pull 上的 mtime

标签 linux git git-pull filemtime

有人知道如何将添加/更新文件的 mtime 更改为存储库提交时间(或任何其他时间,但取决于提交元数据)?

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

最佳答案

假设您在执行 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

关于linux - 更改 git pull 上的 mtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070541/

相关文章:

linux - 未找到命令且不是有效标识符

Linux:支持文件操作

ruby-on-rails - 推送到 heroku 的应用程序仍然显示标准索引页面

git推送不起作用?

linux - 使用netfilter_queue将数据包复制到用户层可以,修改数据包并注入(inject)内核失败

Linux 软件包 在哪里下载完整的依赖项列表

git - 如何使用 TortoiseGit 将单个文件更改推送到两个分支?

Github-Jenkins 触发奴隶问题

git - 如何让我的本地存储库可用于 git-pull?

git - 如何使用 pull 更新本地存储库