2012-05-15 26 views
0

我需要包含一些以前不受版本控制的代码到已经包含一些提交的git存储库中。找到合适的父代提交未加入代码添加到现有的git存储库

我想自动化的是找到一个合适的“父”提交,其中的新代码将是一个孩子承诺。

经过一番测试,我认为git diff-tree将最好的工作(因为只有一个文件夹包含相关的代码为“父母”测试)。

我的做法是这样的:

  1. 循环通过相关子树的所有现有的提交和提交的节点SHA1和SHA1
  2. 新的文件复制到存储库中,将它们添加到索引
  3. 注SHA1的相关子树
  4. 比较现有的相关子树与新候选者,并使用类似的东西的git diff-tree计算“相似度”
  5. 选择最多类似的现有子树,并使其成为新提交的父代,即检出新的父代(或checkout --orphan,如果找不到合适的父代),则清空工作目录并填写新文件并提交。

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

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

回答

1

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

+0

我目前正在使用类似于你的建议:'git diff-tree -r -M80%-C80%--numstat'并提取添加/删除的行数。虽然它在某种程度上起作用,但我认为可能有更复杂的选择。 – Onur

相关问题