threads / discuss / 47333

Feature request: Reduce amount of diff in patch

Subject: Feature request: Reduce amount of diff in patch

## tl;dr

4 messages between Nov 28, 2017 and Dec 7, 2017.

replies: 3people: 4as markdown or json

KES· Nov 28, 2017, 16:09 UTC · lore
Hi.
I get often patches which can be minimized:
@@ -60,11 +64,8 @@ sub _get_filter {
         address    =>  { -like => \[ '?',  "%$search%" ] },
         company    =>  { -like => \[ '?',  "%$search%" ] },
         country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
-    ]);
 
-    $users =  $users->search( $filter, {
-        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
-    });
+    ]);
 
 
     return $users;

This patch can be minimized to:

@@ -60,11 +64,8 @@ sub _get_filter {
         address    =>  { -like => \[ '?',  "%$search%" ] },
         company    =>  { -like => \[ '?',  "%$search%" ] },
         country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
     ]);
 
-    $users =  $users->search( $filter, {
-        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
-    });

 
     return $users;

May you please fix the git to generate minimized patches?

Thank you
Kaartic Sivaraam· Nov 28, 2017, 17:24 UTC · re: KES · lore

Re: Feature request: Reduce amount of diff in patch

On Tue, 2017-11-28 at 18:09 +0200, KES wrote:
> Hi.
> 
> I get often patches which can be minimized:
> 
I guess the one below can't be (see below).
Show 31 quoted lines
> @@ -60,11 +64,8 @@ sub _get_filter {
>          address    =>  { -like => \[ '?',  "%$search%" ] },
>          company    =>  { -like => \[ '?',  "%$search%" ] },
>          country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
> -    ]);
>  
> -    $users =  $users->search( $filter, {
> -        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
> -    });
> +    ]);
>  
>  
>      return $users;
> 
> This patch can be minimized to:
> 
> @@ -60,11 +64,8 @@ sub _get_filter {
>          address    =>  { -like => \[ '?',  "%$search%" ] },
>          company    =>  { -like => \[ '?',  "%$search%" ] },
>          country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
>      ]);
>  
> -    $users =  $users->search( $filter, {
> -        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
> -    });
> 
>  
>      return $users;
> 
> May you please fix the git to generate minimized patches?
> 

You seemed to have overlooked the empty line above the ']);' in the original patch. So, your minimized version isn't actually equivalent to the original one. Further, when trying to recreate your patch I get the following,

diff --git a/diff-test b/diff-test
index 1d5dc1b..f3ec38f 100644
--- a/diff-test
+++ b/diff-test
@@ -1,10 +1,8 @@
         address    =>  { -like => \[ '?',  "%$search%" ] },
         company    =>  { -like => \[ '?',  "%$search%" ] },
         country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
+
     ]);
 
-    $users =  $users->search( $filter, {
-        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
-    });
 
     return $users;

I use git built from the source (2.15.0.531.g2ccb3012c)
-- 
Kaartic
Stefan Beller· Dec 7, 2017, 20:13 UTC · re: KES · lore

Re: Feature request: Reduce amount of diff in patch

On Tue, Nov 28, 2017 at 8:09 AM, KES <kes-kes@yandex.ru> wrote:
Show 34 quoted lines
> Hi.
>
> I get often patches which can be minimized:
>
> @@ -60,11 +64,8 @@ sub _get_filter {
>          address    =>  { -like => \[ '?',  "%$search%" ] },
>          company    =>  { -like => \[ '?',  "%$search%" ] },
>          country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
> -    ]);
>
> -    $users =  $users->search( $filter, {
> -        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
> -    });
> +    ]);
>
>
>      return $users;
>
> This patch can be minimized to:
>
> @@ -60,11 +64,8 @@ sub _get_filter {
>          address    =>  { -like => \[ '?',  "%$search%" ] },
>          company    =>  { -like => \[ '?',  "%$search%" ] },
>          country_code =>  { '=' => \[ 'UPPER(?)' => $search ] },
>      ]);
>
> -    $users =  $users->search( $filter, {
> -        prefetch => { Packages => { Ips => { Subnet => { Server => 'Locality' }}}},
> -    });
>
>
>      return $users;
>
> May you please fix the git to generate minimized patches?
You can use a different diff algorithm.
       --diff-algorithm={patience|minimal|histogram|myers}
           Choose a diff algorithm. The variants are as follows:
           default, myers
               The basic greedy diff algorithm. Currently, this is the
               default.
           minimal
               Spend extra time to make sure the smallest possible diff is
               produced.
           patience
               Use "patience diff" algorithm when generating patches.
           histogram
               This algorithm extends the patience algorithm to "support
               low-occurrence common elements".
           For instance, if you configured diff.algorithm variable to a
           non-default value and want to use the default one, then you have to
           use --diff-algorithm=default option.

Soon we'll have another diff algorithm "anchor" that tries to keep a given line out of the +/- but rather move other lines around the line to give equal results.

Junio C Hamano· Dec 7, 2017, 20:28 UTC · re: Stefan Beller · lore

Re: Feature request: Reduce amount of diff in patch

Stefan Beller <sbeller@google.com> writes:
Show 9 quoted lines
> On Tue, Nov 28, 2017 at 8:09 AM, KES <kes-kes@yandex.ru> wrote:
> ...
>> May you please fix the git to generate minimized patches?
>
> You can use a different diff algorithm.
> ...
> Soon we'll have another diff algorithm "anchor" that tries to
> keep a given line out of the +/- but rather move other lines around
> the line to give equal results.

While all of the above is correct, my understanding is that none of them would produce a patch that KES wants to see.

And we shouldn't ;-) The two changes KES shows in the message are not equivalent.

← back to recent threads