From: Füzesi Zoltán Date: Wed, 04 Aug 2010 18:15:42 GMT Subject: Re: [PATCH] submodule: show_submodule_summary: preserve diff queue Message-ID: In-Reply-To: <1280933106-7016-1-git-send-email-zfuzesi@eaglet.hu> 2010/8/4 Zoltán Füzesi : > git-diff with --submodule option stopped printing diff lines after a submodule > change, because show_submodule_summary reset diff queue. > --- >  submodule.c |    9 +++++++++ >  1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/submodule.c b/submodule.c > index 61cb6e2..5b57536 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -46,6 +46,12 @@ done: >        return ret; >  } > > +static void diff_q_copy(struct diff_queue_struct *dst, > +                       struct diff_queue_struct *src) > +{ > +       memcpy(dst, src, sizeof(struct diff_queue_struct)); > +} > + >  void handle_ignore_submodules_arg(struct diff_options *diffopt, >                                  const char *arg) >  { > @@ -71,6 +77,7 @@ void show_submodule_summary(FILE *f, const char *path, >        struct strbuf sb = STRBUF_INIT; >        static const char *format = "  %m %s"; >        int fast_forward = 0, fast_backward = 0; > +       struct diff_queue_struct diff_q_backup; > >        if (is_null_sha1(two)) >                message = "(submodule deleted)"; > @@ -83,6 +90,7 @@ void show_submodule_summary(FILE *f, const char *path, >                message = "(commits not present)"; > >        if (!message) { > +               diff_q_copy(&diff_q_backup, &diff_queued_diff); >                init_revisions(&rev, NULL); >                setup_revisions(0, NULL, &rev, NULL); >                rev.left_right = 1; > @@ -146,6 +154,7 @@ void show_submodule_summary(FILE *f, const char *path, >                } >                clear_commit_marks(left, ~0); >                clear_commit_marks(right, ~0); > +               diff_q_copy(&diff_queued_diff, &diff_q_backup); >        } >        strbuf_release(&sb); >  } > -- > 1.7.2.1.22.ge7bdd > > hi, commit ee38d823f74bd8872c1e793f98a5b5523ee04646 makes my patch unnecessary.