为什么我会得到这个补丁:
@@ -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
提供一些额外的选项以获得此行为吗?
答案 0 :(得分:3)
Git的diff实现了通用最小编辑距离或字符串到字符串编辑问题的特定变体。我们给出了一些初始符号集和一些最终集,我们被告知从一些有限的编辑命令中得出最少的编辑指令。
在我们的特定情况下,唯一允许的指令是"删除符号"和"添加符号" (没有"移动"允许,但见下文)。此外,我们不知道每个符号的含义,但每个符号"符号"是源代码行。
两个"符号"当且仅当它们完全匹配时,或者(在打开某些行尾和/或空格选项时)匹配一些物品(主要是空格或回车)之后匹配是相同的。我们的工作是产生最少数量的"删除"和"插入新的"命令。
你展示的差异有两个"插入" s和一个"删除"。 diff Git产生的还有两个" insert" s和一个" delete"。就Git所知,这使它们相等。它所选择的只是几个“平等”的问题。它通过比较矩阵选择的追溯路径。
git blame
中的代码允许 允许移动的其他算法。允许移动时解决问题要困难得多,因此git diff
不会烦恼。要在git blame
中启用移动检测,请使用-M
。
答案 1 :(得分:1)
git diff --patience
会产生您期望的结果。该方法努力不将行标记为在未更改时添加或删除。它不是默认值,因为它的计算成本很高。 (当目的是生成稍后应用的补丁时,大多数时候,差异是否看起来都是无关紧要的。)