2

情况是这样的:我有一堆很久以前的文件(当我没有使用任何类型的源代码控制时),我很想将它们放到现代 Git 存储库中。

我为此找到了一个工具 - file-fast-export。它获取现有文件并吐出一个可以馈送到git fast-import. 到目前为止还好。

唯一的问题是 fast-import 对输入格式有点挑剔,而 file-fast-export 并不是一个特别完善的程序——它假设文件正在被导入到新的存储库中。

所以我的用例是这样的:我有一个 git 存储库。我发现了一个以前丢失的子目录。文件修改时间在那里。我需要在当前存储库历史记录之上提交每个文件,以便提交时间戳对应于修改时间。据我了解,Git 不会强制提交具有按时间顺序连续的时间戳,只是提交彼此跟随。如果我能做git log xxxxx.txt并查看文件历史记录,我会很高兴。

我确信有工具可以做到这一点。我怎样才能做到这一点?

4

1 回答 1

0

唯一的问题是快速导入对输入格式有点挑剔

实际上......使用 Git 2.28(2020 年第三季度),一些野外存储库的提交记录了无意义的提交者时区(例如rails.git);" git fast-import" 学会了一个选项来完整地传递这些无意义的时间戳,以允许按原样重新创建现有的存储库。

这对您的情况可能会有所帮助。

请参阅Elijah Newren ( ) 的提交 d42a2fb(2020 年 5 月 30 日(由Junio C Hamano 合并 -- --提交 5404183中,2020 年 6 月 2 日)newren
gitster

fast-import: 添加新--date-format=raw-permissive格式

签字人:以利亚·纽伦

在野外有多个存储库具有随机、无效的时区。

最值得注意的是来自rails.git时区 "+051800"的提交。

一些搜索也会找到具有相同无效时区的其他存储库。

此外,Peff 报告说GitHubfsck在 2011 年 8 月放宽了检查以接受任何时区值,并且有多个filter-repo关于fast-import 在尝试导入现有存储库时崩溃的报告,因为它们具有诸如“-[7349423]”和“-”之类的时区值[43455309]”

对内部时区值的现有检查fast-import可能对手动或使用新脚本制作快速导入输入的人很有用。

对他们来说,支票可以帮助他们避免意外记录无效日期。

(请注意,此检查相当简单,并且仍然有几种形式的无效日期是快速导入不检查的:未来的日期、分钟数不能被 15 整除的时区值以及分钟数为 60 的时区值或更大。)
虽然这个简单的检查可能对这些用户有一些价值,但其他用户或工具将希望按原样导入现有存储库。
提供一种--date-format=raw-permissive不会在这些否则无效的时区上出错的格式,以便可以导入此类现有存储库。

于 2020-06-07T00:55:44.127 回答