【问题标题】:git fast-import - how to handle subdirectories when importing from backup filesgit fast-import - 从备份文件导入时如何处理子目录
【发布时间】:2017-10-10 15:17:40
【问题描述】:

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

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

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

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

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

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

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

如何检索此 SHA 哈希?

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

【问题讨论】:

    标签: git git-fast-import


    【解决方案1】:

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

    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 使用'\'...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多