Re: correct git merge behavior or corner case?
- From
Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
- Date
- Apr 21, 2009, 17:27 UTC
- Message-ID
- <20090421192700.181f8503@gmail.com>
- In-Reply-To
- <alpine.DEB.1.00.0904211100350.10279@pacific.mpi-cbg.de>
Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 27 quoted lines
> Hi,
>
> On Tue, 21 Apr 2009, Johannes Schindelin wrote:
>
> > I actually agree with Junio, though, that we want this special
> > handling of empty files only in merge-recursive.
>
> And this _might_ be enough (not even compile-tested due to lack of
> time; the OP did not provide the test as a proper patch):
>
> ---
>
> merge-recursive.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/merge-recursive.c b/merge-recursive.c
> index 774bacd..b7ea3cd 100644
> --- a/merge-recursive.c
> +++ b/merge-recursive.c
> @@ -343,7 +343,7 @@ static struct string_list *get_renames(struct merge_options *o, struct string_list_item *item;
> struct rename *re;
> struct diff_filepair *pair = diff_queued_diff.queue[i];
> - if (pair->status != 'R') {
> + if (pair->status != 'R' || !re->pair->one->size) {
> diff_free_filepair(pair);
> continue;
> }This doesn't work for me (actually, it segfaults, "re" has just been declared). However, removing "re->" solves the problem.
---
merge-recursive.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/merge-recursive.c b/merge-recursive.c index d6f0582..9c2a77f 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -343,7 +343,7 @@ static struct string_list *get_renames(struct merge_options *o, struct string_list_item *item; struct rename *re; struct diff_filepair *pair = diff_queued_diff.queue[i]; - if (pair->status != 'R') { + if (pair->status != 'R' || !pair->one->size) { diff_free_filepair(pair); continue; }