【发布时间】:2015-04-23 22:30:30
【问题描述】:
情况是这样的:我有一堆很久以前的文件(那时我还没有使用任何类型的源代码控制),我很想将它们放到现代 Git 存储库中。
我为此找到了一个工具 - file-fast-export。它获取现有文件并吐出一个可以提供给git fast-import 的文件。到目前为止还不错。
唯一的问题是 fast-import 对输入格式有点挑剔,而 file-fast-export 不是一个特别完善的程序 - 它假设文件正在被导入新的存储库。
所以我的用例是这样的:我有一个 git 存储库。我发现了一个以前丢失的子目录。文件修改时间在那里。我需要在当前存储库历史记录之上提交每个文件,以便提交时间戳对应于修改时间。据我了解,Git 不会强制提交具有按时间顺序连续的时间戳,只是提交彼此跟随。如果我可以 git log xxxxx.txt 并查看文件历史记录,我会很高兴。
我确信有一些工具可以做到这一点。我该怎么做?
【问题讨论】:
-
创建新提交时可以手动指定提交日期;例如,参见stackoverflow.com/q/28090026/2541573
-
可能没有两个文件具有完全相同的时间戳。这是否意味着,您希望每次提交只有一个文件的历史记录?与一个包含所有文件的提交相比有什么优势?
-
是的,我知道可以在
git commit中手动指定日期,但我需要手动提交每个文件。我只是想知道是否已经有一个完善的工具可以一举为整个子目录执行此操作。这样做而不是单个提交的优点是,这样,每个文件都有以标准方式记录的修改日期。我知道一种方法是在提交日志中附加ls -lR进行一次提交,但这并不完全优雅...... -
@wwwwolf 你可以为此编写一个 shell 脚本。但是,我不明白您为什么要为每个文件创建一个提交。这违背了 Git 提交的语义,它旨在表示工作单元,无论是在一个文件还是多个文件上。
-
但是对于有问题的文件,“工作单元”可以解释为“大致同时修改的文件组”,所以我认为它不违背 Git语义。不过,您是对的,脚本始终是一种解决方案——我只是想知道是否有脚本已经完成了所有这些工作。
标签: git git-fast-import