V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LeeReamond
V2EX  ›  问与答

有什么脚本能一键把 git clone 仓库里所有文件重设为它最后被修改的时间吗?

  •  
  •   LeeReamond · 2022-04-14 16:24:31 +08:00 · 888 次点击
    这是一个创建于 987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,windows 下 gitclone 出来的目录,里面所有文件的修改时间都是 clone 的时间,按修改时间排序的按钮失去功能了。

    有什么 powershell 或者 bash 脚本可以根据 git 里记录的文件最后修改时间把文件的修改时间替换回来吗?

    ===================================

    感觉网上应该有大佬实现过类似内容,不想重复发明轮子了。不过实在没有的话倒也可以用 python 自己实现,问题在于 git 怎么获取每个文件最后更改时间呢。。

    7 条回复    2022-04-14 17:44:21 +08:00
    XiLingHost
        1
    XiLingHost  
       2022-04-14 16:27:44 +08:00
    git 并不记录文件的修改时间
    ResponseBody
        2
    ResponseBody  
       2022-04-14 16:28:21 +08:00 via iPhone
    修改电脑时间再 clone 呗
    mercury233
        3
    mercury233  
       2022-04-14 16:33:23 +08:00   ❤️ 1
    AoEiuV020CN
        4
    AoEiuV020CN  
       2022-04-14 16:36:42 +08:00
    巧了,正好写过, 把文件修改时间重置为最后一个 commit 的时间,
    不过我是 linux 环境的, 而且最终没解决 X 问题,所以没有正式使用,仅供参考吧,

    https://github.com/AoEiuV020/owt-server-docker/blob/main/script/touch
    LeeReamond
        5
    LeeReamond  
    OP
       2022-04-14 16:45:39 +08:00
    @AoEiuV020CN 感谢,试了试 gitlog-1 命令很好用。最终没解决 X 问题是啥意思

    另外这个在 win 环境下使用 bash 不能运行是因为 unixtime 和 touchtime 这些不一样吗
    AoEiuV020CN
        6
    AoEiuV020CN  
       2022-04-14 16:54:05 +08:00
    @LeeReamond #5 X 问题是说“XY 问题”,我为了解决 X 问题,而提出了 Y 问题,然后这个脚本是用来解决 Y 问题的,最后发现 Y 问题无法解决 X 问题,于是这个脚本就废弃了,

    脚本里平台有关的就一个 touch 命令,用来最终设置“文件修改时间”的,
    你看看有 touch 命令应该就没问题, 没有的话就找别的代替就是了,
    LeeReamond
        7
    LeeReamond  
    OP
       2022-04-14 17:44:21 +08:00
    @AoEiuV020CN 还是撸了 python 控制解决了,win 可能还有一些 powershell 相关的编码问题,还有 git 的编码问题,不太确定 git 输出的文件名是否能指向文件。

    https://gist.github.com/GoodManWEN/f4c84cc3ba617697eade59733ab6c4ed
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5444 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:04 · PVG 17:04 · LAX 01:04 · JFK 04:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.