【发布时间】:2020-08-08 10:53:49
【问题描述】:
给定一个 git 存储库和一个没有修订信息的 tarball。 tarball 中的树在过去的某个时间点源自存储库,并且发生了相当大的变化。存储库也发生了很大变化。从存储库复制 tarball 树的提交是未知的。任务是找到最接近 tarball 的提交,检查 tarball 树中的更改或将 tarball 树嫁接回存储库。
我之前通过手动二分搜索做到了这一点,最大限度地减少了diff -ruN gitrepo tartree | wc -c 的输出。我想知道是否有可以自动执行任务的工具?
【问题讨论】:
-
如果 tarball 树在最初创建后发生了变化,我看不到任何可以确定找到原始提交的方法。但是您可以将它应用于历史中的每个提交,并查看您从提交的内容中获得最少更改的地方。一旦你找到了修改最少的提交,你可能已经有了它的提交,但不能保证。
-
蛮力可以作为一种解决方案来找到与你的 tar 球相比具有最小差异的提交。但是如果你对所做的修改没有任何线索,你必须定义一个度量来定义最接近的。顺便说一句,没有什么能保证最接近的是原始提交