[英]Committing existing files to existing Git repository, while preserving timestamps
情况是这样的:我有一堆很久以前的文件(当我没有使用任何类型的源代码控制时),我很想把它们放到现代 Git 存储库中。
我为此找到了一个工具 - file-fast-export 。 它获取现有文件并输出一个可以提供给git fast-import
。 到目前为止还好。
唯一的问题是快速导入对输入格式有点挑剔,文件快速导出不是一个特别精致的程序——它假设文件被导入到新的存储库中。
所以我的用例是这样的:我有一个 git 存储库。 我发现了一个以前丢失的子目录。 文件修改时间在那里。 我需要在当前存储库历史记录之上提交每个文件,以便提交时间戳对应于修改时间。 据我了解,Git 不会强制提交具有按时间顺序连续的时间戳,只有提交会相互跟随。 如果我可以执行git log xxxxx.txt
并查看文件历史git log xxxxx.txt
我会很高兴。
我确信有工具可以做到这一点。 我怎样才能做到这一点?
唯一的问题是快速导入对输入格式有点挑剔
实际上......在 Git 2.28(2020 年第三季度)中,一些野外存储库的提交记录了无意义的提交者时区(例如rails.git
); “ git fast-import
”学习了一个选项,可以完整地传递这些无意义的时间戳,以允许按原样重新创建现有存储库。
这对您的情况可能会有所帮助。
请参阅Elijah Newren ( newren
) 的commit d42a2fb (2020 年 5 月 30 日) 。
(由Junio C gitster
合并-- gitster
-- in commit 5404183 ,2020 年 6 月 2 日)
fast-import
:添加新的--date-format=raw-permissive
格式签字人: Elijah Newren
有多个随机、无效时区的存储库。
最值得注意的是来自
rails.git
的提交, 时区为 "+051800" 。一些搜索也会找到具有相同无效时区的其他存储库。
此外,Peff 报告说GitHub 在 2011 年 8 月放宽了他们的
fsck
检查以接受任何时区值,并且有多个报告filter-repo
存储库关于在尝试导入现有存储库时fast-import
崩溃,因为它们具有时区值,例如“- [7349423]”和“-[43455309]” 。对
fast-import
时区值的现有检查可能对手工或使用新脚本制作快速导入输入的人有用。对他们来说,支票可以帮助他们避免意外记录无效日期。
(请注意,此检查相当简单,但仍有几种形式的无效日期无法进行快速导入检查:将来的日期、不能被 15 整除的分钟的时区值以及分钟为 60 的时区值或更高。)
虽然这个简单的检查可能对这些用户有一些价值,但其他用户或工具将希望按原样导入现有存储库。
提供一个--date-format=raw-permissive
格式,该格式不会在这些否则无效的时区上出错,以便可以导入此类现有存储库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.