【发布时间】:2020-03-24 20:19:54
【问题描述】:
我有一些格式的文件(我们称它们为 *.db 文件)无法被 git 正确区分/合并。但是,可以将这些文件中的每一个转换为 git 可以正确处理的文件结构——对于每个 db 文件,我们可以生成一个目录树,以便该树中的每个文件都是可以区分的常规文本文件/由 git 合并(我们称这个过程为“解构”)。此外,该目录树的内容可以组合在一起以(重新)构建原始 db 文件。这种方法允许我们将标准 git 托管与所有常见的工作流程(拉取请求、自动合并等)一起使用这些特殊文件。
现在来看实际问题:我想让这一切对用户完全透明。也就是说,每当用户暂存 db 文件时,我都希望“解构”脚本自动运行转换后的表示形式。同样,无论何时运行结帐操作,我都希望运行“构造”脚本,以便用户获取正确的 db 文件。这也应该适用于git add -a 等。我希望这一切都发生在客户端,因为我无法更改远程配置(所以自定义合并工具也不可能出现)。
如果在远程数据以解构形式出现是可以的。事实上,理想情况下,我希望看到类似
data.db/
1.txt
2.txt
....
n.txt
在远程获取本地存储库中的文件data.db — 但我不知道这是否可能。这意味着本地 git 将能够在暂存区域中创建此解构形式(并提交)+ 将其重建为 db 文件,而解构形式不会接触实际工作目录。
我认为至少上述的某些方面会起作用(否则像 git-lfs 这样的工具是如何做到的?),但我不知道有什么限制以及从哪里开始寻找。我知道预提交等钩子,但我认为它们不允许我直接操作暂存区域。
如果有人能针对如何完成此工作流程制定一个攻击计划,我将不胜感激。
【问题讨论】:
标签: git