git - 如何使用 git archive 保存时间戳
问题描述
我使用 post-commit 脚本将“git archive”到临时目录,然后我使用 Rsync 将更改的文件移动到我的 dev 工作目录。我正在使用 rsync 保留时间戳,但是 git archive 命令将所有时间戳更新为当前日期和时间,所以一切都被推送了。根据文档(引用如下),只有在我传递树 ID 而不是提交 ID 时才应该这样做。我没有通过任何东西。
我要复制到 temp 的 git archive 命令:
git archive $branch | (cd $tempdir; tar x)
这是文档中的内容:
“git存档在给定树ID与给定提交ID或标签ID时的行为不同。在第一种情况下,当前时间用作存档中每个文件的修改时间。在后一种情况下,提交时间记录在使用引用的提交对象。此外,如果使用 tar 格式,则提交 ID 存储在全局扩展 pax 标头中;可以使用 git get-tar-commit-id 提取它。在 ZIP 文件中,它存储为文件评论。”
这是否意味着我需要获取提交 ID 并将其传递给 git 存档?我怎么做?
我有点困惑?如何在不更改时间戳的情况下存档到我的临时目录?
谢谢。
编辑:我也试过这些无济于事:
git archive get-tar-commit-id $branch | (cd $tempdir; tar x)
和
git archive $(git get-tar-commit-id) $branch | (cd $tempdir; tar x)
我不确定正确的语法是什么。也许这比我想象的要容易?
解决方案
我使用的一个工作流程是制作一个非裸遥控器,而且
git config --local receive.denycurrentbranch true
然后服务器可以有一个真正的工作目录,你可以推送到它。
推荐阅读
- node.js - 有什么方法可以使用 .find() 方法来 JSON 返回文件?
- sql - 重构 SQL 查询
- html - 当我的高度设置为自动时,动画箭头一直在我的 div 之外
- php - 调用未定义的方法 Slim\\Psr7\\Response::write()
- powershell - 如果它们在 Powershell 等中匹配,则将文件移动到子文件夹?
- javascript - UL/LI 下拉菜单
- excel - 按工作日划分每周预算
- python - 使用 timedelta 在图形上正确对齐峰值
- android - Flutter Admob 检查是否已加载 BannerAd 以布局 UI
- c++ - C++ 在 std:wstring 中找到 std:string