1

我经常让自己陷入以下情况:

我开始应该是一个“小项目”(几乎总是一个文件脚本),并决定该项目足够简单,我不需要使用 git 对其进行版本控制。

所以我在编写脚本 - 调用它do-thing.py。在某个时候,我决定我想做一些重构,或者做一些其他大的改变。我决定进行备份,以防万一它不起作用并且我想恢复。所以,我复制文件并将副本命名为do-thing 1-before big refactor.py.

这继续下去,在某些时候,我有一个文件夹,里面装满了脚本的各种旧快照:

do-thing.py
do-thing 1-before big refactor.py
do-thing 2-before changed function.py
do-thing 3-before alg change.py

其中从最旧到最新的顺序是do-thing 1-*.py, do-thing 2-*.py, do-thing 3-*.py, do-thing.py(尽管这个细节对这个问题并不重要)。

在这一点上(甚至可能超过 3 个备份),我意识到这个项目比预期的要大,我应该刚开始使用版本控制。不幸的是,这种认识只有在我陷入这种情况之后才会出现。

我想将一系列这样的文件转换为一系列 git 提交。我过去手动完成了这项工作,但想知道是否有任何现有的工具。理想情况下,它还将使用文件名作为提交消息。

是否有任何现有的工具可以将文件版本转换为 git 历史记录?

在 git pro 书籍的本节中,有这样一句话:“质量导入器可用于许多其他系统,......甚至是档案目录。” ,建议存在这样的工具,但他们没有提供任何参考。

在同一部分,靠近底部,他们提供了一个示例脚本,用于对文件夹执行此操作。我正在考虑为这个用例编写自己的 git fast-exporter,但我认为这个用例一定很常见,所以我想在编写自己的之前先了解一下现有选项。

我在网上找不到任何东西,所以我在这里问。您是否知道进行此转换的任何工具?

4

1 回答 1

0

我不知道现有的工具,但我会制作一个简单的脚本,它将:

也就是说,对于每次迭代:

cd /path/to/new/repo
git --work-tree=/path/to/do-thing-x add --ignore-removal .
git commit -m "Import iteration x"

正如所评论的那样,对于一个文件,这是矫枉过正和缓慢的。
git fast-import当然更容易。

于 2020-10-10T04:41:12.667 回答