gpt4 book ai didi

git - git-diff 中的意外结果

转载 作者:太空狗 更新时间:2023-10-29 14:36:40 25 4
gpt4 key购买 nike

为什么我得到这个补丁:

@@ -129,8 +132,9 @@ sub _preprocess_message {
sub _process_message {
my ($self, $message) = @_;

- my $method = ref($message) eq 'HASH' ? $message->{method} : undef;
+ my $time = [ gettimeofday ];

+ my $method = ref($message) eq 'HASH' ? $message->{method} : undef;
return $self->send_error(ERROR_REQUEST_INVALID)
unless defined($method);

当删除 my $method = ... 后的空行时:

@@ -129,6 +132,8 @@ sub _preprocess_message {
sub _process_message {
my ($self, $message) = @_;

+ my $time = [ gettimeofday ];
+
my $method = ref($message) eq 'HASH' ? $message->{method} : undef;

return $self->send_error(ERROR_REQUEST_INVALID)

我希望看到这个补丁而不是第一个:

@@ -129,6 +132,8 @@ sub _preprocess_message {
sub _process_message {
my ($self, $message) = @_;

+ my $time = [ gettimeofday ];
+
my $method = ref($message) eq 'HASH' ? $message->{method} : undef;
-
return $self->send_error(ERROR_REQUEST_INVALID)

my $method = ref($message) eq 'HASH' ? $message->{method} : undef; 根本没有改变:空白没有变化,EOL 是一样的

也许我应该为 git 提供一些额外的选项来获得这种行为?

最佳答案

Git 的 diff 实现了通用最小编辑距离字符串到字符串编辑问题 的特定变体。我们得到了一些初始符号集和一些最终符号集,我们被告知要从一些有限的编辑命令集中提出最少的编辑指令。

在我们的特定情况下,唯一允许的指令是“删除符号”和“添加符号”(不允许“移动”,但见下文)。此外,我们不知道每个符号的含义,但每个“符号”都是一个源代码行

这两个“符号”是相同的当且仅当它们完全匹配,或者(打开某些行尾和/或空白选项)在剥离一些项目(空白或回车)后匹配,主要是)。我们的工作是生成最少数量的“删除”和“插入新”命令。

您显示的差异有两个“插入”和一个“删除”。 Git 生成的 diff 也有两个“插入”和一个“删除”。据 Git 所知,这使它们相等。它选择哪一条只是通过比较矩阵选择几条“相等”的回溯路径中的哪一条。

git blame 中的代码允许使用一种不同的算法,确实 允许移动。在允许移动时解决问题要困难得多,所以 git diff 就不用费心了。要在 git blame 中启用移动检测,请使用 -M

关于git - git-diff 中的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40550751/

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