All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Edelen <sirnot@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] fix show_entry() in tree-diff.c for TREE_IN_RECURSIVE
Date: Sun, 14 Jun 2009 14:01:20 +0200	[thread overview]
Message-ID: <c77435a80906140501m1b63512fif5cc5e57f5d114c5@mail.gmail.com> (raw)
In-Reply-To: <7vvdmzu1c8.fsf@alter.siamese.dyndns.org>

ah, right.  so next time I should add a test to demonstrate and verify
the external effect?  admittedly part of the reason I hadn't showed
any example output was because I changed this from an internal
perspective.  I'll definitely do that next time though.  thanks for
the example!  (btw, what is the numerical naming convention for
tests?)

you know if no one really liked it as an output we could keep this
change for internal consistency's sake, and filter our added/removed
dirs in the outputing, or even diff_addremove.  seems a bit hackish
though...

(also, do you want me to resubmit?  because you seem to have taken care of it)

 - Nick

On Sun, Jun 14, 2009 at 2:05 AM, Junio C Hamano<gitster@pobox.com> wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> "Nick Edelen" <sirnot@gmail.com> writes:
>> ...
>>> this seems like how it should act: trees are shown under this option for
>>> changes,...
>>
>> Please show a sample input, the output you expect and the output from the
>> current code, to illustrate the alleged breakage better.
>> ...
>> I think the output from the code after your change is more consistent, but
>> I somehow suspect that this might break people's script, like gitweb,
>> rather badly, if they depended on the existing behaviour.
>
> That is, something like the attached patch.
>
> I cannot afford to do this to everybody, but you seem to be new to the
> community, and every once in a while teaching by showing example is the
> best way to do things, so...
>
> -- >8 --
> From: Nick Edelen <sirnot@gmail.com>
> Subject: [PATCH] diff-tree -r -t: include added/removed directories in the output
>
> We used to include only the modified and typechanged directories
> in the ouptut, but for consistency's sake, we should also include
> added and removed ones as well.
>
> This makes the output more consistent, but it may break existing scripts
> that expect to see the current output which has long been the established
> behaviour.
>
> Signed-off-by: Nick Edelen <sirnot@gmail.com>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>
>  * This should apply at least down to 1.6.0 series, if not earlier.
>
>  t/t4037-diff-r-t-dirs.sh |   53 ++++++++++++++++++++++++++++++++++++++++++++++
>  tree-diff.c              |    6 +++++
>  2 files changed, 59 insertions(+), 0 deletions(-)
>
> diff --git a/t/t4037-diff-r-t-dirs.sh b/t/t4037-diff-r-t-dirs.sh
> new file mode 100755
> index 0000000..f5ce3b2
> --- /dev/null
> +++ b/t/t4037-diff-r-t-dirs.sh
> @@ -0,0 +1,53 @@
> +#!/bin/sh
> +
> +test_description='diff -r -t shows directory additions and deletions'
> +
> +. ./test-lib.sh
> +
> +test_expect_success setup '
> +       mkdir dc dr dt &&
> +       >dc/1 &&
> +       >dr/2 &&
> +       >dt/3 &&
> +       >fc &&
> +       >fr &&
> +       >ft &&
> +       git add . &&
> +       test_tick &&
> +       git commit -m initial &&
> +
> +       rm -fr dt dr ft fr &&
> +       mkdir da ft &&
> +       for p in dc/1 da/4 dt ft/5 fc
> +       do
> +               echo hello >$p || exit
> +       done &&
> +       git add -u &&
> +       git add . &&
> +       test_tick &&
> +       git commit -m second
> +'
> +
> +cat >expect <<\EOF
> +A      da
> +A      da/4
> +M      dc
> +M      dc/1
> +D      dr
> +D      dr/2
> +A      dt
> +D      dt
> +D      dt/3
> +M      fc
> +D      fr
> +D      ft
> +A      ft
> +A      ft/5
> +EOF
> +
> +test_expect_success verify '
> +       git diff-tree -r -t --name-status HEAD^ HEAD >actual &&
> +       test_cmp expect actual
> +'
> +
> +test_done
> diff --git a/tree-diff.c b/tree-diff.c
> index 9f67af6..c83a8da 100644
> --- a/tree-diff.c
> +++ b/tree-diff.c
> @@ -233,6 +233,12 @@ static void show_entry(struct diff_options *opt, const char *prefix, struct tree
>                if (!tree || type != OBJ_TREE)
>                        die("corrupt tree sha %s", sha1_to_hex(sha1));
>
> +               if (DIFF_OPT_TST(opt, TREE_IN_RECURSIVE)) {
> +                       newbase[baselen + pathlen] = 0;
> +                       opt->add_remove(opt, *prefix, mode, sha1, newbase);
> +                       newbase[baselen + pathlen] = '/';
> +               }
> +
>                init_tree_desc(&inner, tree, size);
>                show_tree(opt, prefix, &inner, newbase, baselen + 1 + pathlen);
>
>

      reply	other threads:[~2009-06-14 12:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-13 20:32 [PATCH] fix show_entry() in tree-diff.c for TREE_IN_RECURSIVE Nick Edelen
2009-06-13 23:42 ` Junio C Hamano
2009-06-14  0:05   ` Junio C Hamano
2009-06-14 12:01     ` Nick Edelen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c77435a80906140501m1b63512fif5cc5e57f5d114c5@mail.gmail.com \
    --to=sirnot@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.