0

我需要将一些以前不受版本控制的代码包含到已经包含一些提交的 git 存储库中。

我想要自动化的是找到合适的“父”提交,新代码将成为子提交。

经过一些测试,我认为git diff-tree效果最好(因为只有一个文件夹包含用于测试“亲子关系”的相关代码)。

我的方法是这样的:

  1. 循环遍历所有现有提交和提交的节点 sha1 和相关子树的 sha1
  2. 将新文件复制到存储库,将它们添加到索引
  3. 注意索引中相关子树的 sha1
  4. 将现有的相关子树与新的候选者进行比较,并使用 git diff-tree of something similar 来计算“相似度”
  5. 选择最相似的现有子树并使其成为新提交的父级,即检查新父级(或者checkout --orphan如果找不到合适的父级),清空工作目录并填充新文件并提交。

缺少的是一种计算相似度的方法!也许有人可以给我一个提示,哪种标志组合会有所帮助......

如果这很重要,代码看起来几乎像 PASCAL。

4

1 回答 1

1

这里不git diff --numstat适合你。您可以将差异指示在特定文件或路径之间,并且输出是“机器友好的”。

于 2012-05-15T16:05:41.203 回答