On Mon, 16 Nov 2009, Stefan Sperling wrote:
>   5) Hunks are only applied if they do not overlap with any other hunk.

Other patch implementations are able to deal with overlapping hunks.
For example, consider this pair of hunks on the left, and a
corresponding single hunk on the right:

        @@ -1,5 +1,5 @@         @@ -1,9 +1,9 @@
         one                     one
         two                     two
        -three                  -three
        +3                      +3
         four                    four
         five                    five
        @@ -5,5 +5,5 @@          six
         five                   -seven
         six                    +7
        -seven                   eight
        +7                       nine
         eight                  
         nine                   

Even though line 5 appears in both hunks on the left, I think the
intent is clear.  I think that the only difference between the left
hand pair of hunks and the right hand single hunk is that, with
the pair of hunks, it should be possible for one hunk to fail while
the other succeeds, but with a single hunk there is no possibility
of partial success.

An interactive patch assistant or conflict resolution tool might
want to offer the option of splitting a hunk into two or more
smaller hunks and re-trying each smaller hunk.  "git add --patch"
offers something like this in a different context (getting ready
to commit a subset of the changes to a file).

--apb (Alan Barrett)

Reply via email to