0

我正在为 git-import 编写一个导入器前端,以从我们的“平面文件版本控制”创建一个存储库。

我设法遍历了我的目录,并且正在为目录中可以找到的所有文件生成提交输出。

但我不明白如何处理子目录。像这样的东西:

/dir
|
+-- file
|
+-- /subdir
    |
    +-- another_file

据我了解,我必须先导入subdir,然后再导入another_file。但是我从文档中不明白如何实现这一点。

关于提交期间内联数据格式的 git 文档告诉我:

040000:一个子目录。子目录只能由 SHA 或通过使用 --import-marks 设置的树标记指定。

如何检索此 SHA 哈希?

还是我在这里把事情复杂化了?我记得不必为目录执行git add,因为它们是与其中的文件一起添加的。仅从我的源目录添加文件就足够了吗?

4

1 回答 1

0

你没有什么特别的,只需将根的完整路径放在提交中:

blob
mark :14
data 34
File 6 - rev 1
SubDir: TestFiles1

commit refs/heads/master
mark :15
author abc <a.bc@xxx.com> 1507618733 +0200
committer abc <a.bc@xxx.com> 1507618733 +0200
data 3
C3
from :10
M 100644 :11 TF1.txt
M 100644 :12 TF3.txt
M 100644 :13 TF5.txt
M 100644 :14 TestFiles1/TF6.txt

您可以在手动创建所需的 git 结构时简单地验证快速导入的语义/语法,并快速导出到文件中。在那种情况下,我偶然发现了一个事实,即快速导入需要'/'而 windows 使用'\'......

于 2017-10-10T07:17:40.287 回答