gpt4 book ai didi

git - 在大型源代码树中测量 "closeness"

转载 作者:太空狗 更新时间:2023-10-29 13:03:03 26 4
gpt4 key购买 nike

作为我之前提出的关于 finding the best match between two sources 的问题的一部分,其中一个有一个活跃的 git 仓库,另一个没有 git 历史,我写了 a perl script to find the closest git commit .

我正在重写脚本,这样你就不必猜测要使用哪个分支,但它会遍历并找到所有分支中最接近的匹配项,然后告诉你最好的提交最好的分支。不幸的是,我发现我使用的测量方法可能不是“接近度”的最佳判断。

目前,我使用 diff -burN -x.git my_git_subtree my_src_subtree | wc -l 以确定代码树的接近程度。这似乎或多或少起作用,但我遇到了添加或丢失整个文件夹的情况,这些文件夹可能存在或不存在于另一个分支中。

是否有更好的方法来确定来源的接近程度?我正在设想比较目录结构的东西,可能还有多少行是不同的。这可能只是将不同的参数传递给 diff 的问题,或者可能有另一个工具可以做类似的事情。

最佳答案

要改进您的测量,为什么不尝试“git diff --shortstat”?输出如下所示:

 1 file changed, 1 insertion(+), 2 deletions(-)

您可以尝试根据结果确定文件更改/插入/删除的优先级。

看看你的 perl,我认为你可能无法对提交之间的“紧密度”顺序做出假设——你可能需要强制检查每个提交,或者至少将其作为一个选项.

我还建议您不要寻找最接近的,而是保留一个排序的(提交,“接近”)对列表,并可能显示前几对并手动检查它们。如下所述,没有 Elixir 可以仅通过查看更改的数量来确定两组代码是否接近。也就是说,更改的数量绝对可以帮助您缩小应该查看的列表的范围...

更新:我还应该提一下,使用 git diff 的另一个优点是您不必为每次提交都运行硬重置。简单地从你的未知树(没有 git 历史的那个)符号链接(symbolic link) .git/目录,并使用 git reset [--mixed] 它会更新当前的头指针但保持你的源不变(显然需要备份未知的使用此方法之前的源代码树)。

关于git - 在大型源代码树中测量 "closeness",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14718696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com