{"thread":{"id":"24629","subject":"[PATCH] submodule: show_submodule_summary: preserve diff queue","startedAt":"2010-08-04T14:45:06Z","lastAt":"2010-08-04T18:15:42Z","messageCount":2,"participants":["Zoltán Füzesi","Füzesi Zoltán"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"147113","messageId":"1280933106-7016-1-git-send-email-zfuzesi@eaglet.hu","threadId":"24629","inReplyTo":null,"subject":"[PATCH] submodule: show_submodule_summary: preserve diff queue","fromName":"Zoltán Füzesi","fromEmail":"zfuzesi@eaglet.hu","sentAt":"2010-08-04T14:45:06Z","receivedAt":"2010-08-04T14:45:06Z","isPatch":true,"sender":{"key":"zfuzesi@eaglet.hu","avatar":null},"body":"git-diff with --submodule option stopped printing diff lines after a submodule\nchange, because show_submodule_summary reset diff queue.\n---\n submodule.c |    9 +++++++++\n 1 files changed, 9 insertions(+), 0 deletions(-)\n\ndiff --git a/submodule.c b/submodule.c\nindex 61cb6e2..5b57536 100644\n--- a/submodule.c\n+++ b/submodule.c\n@@ -46,6 +46,12 @@ done:\n \treturn ret;\n }\n \n+static void diff_q_copy(struct diff_queue_struct *dst,\n+\t\t\tstruct diff_queue_struct *src)\n+{\n+\tmemcpy(dst, src, sizeof(struct diff_queue_struct));\n+}\n+\n void handle_ignore_submodules_arg(struct diff_options *diffopt,\n \t\t\t\t  const char *arg)\n {\n@@ -71,6 +77,7 @@ void show_submodule_summary(FILE *f, const char *path,\n \tstruct strbuf sb = STRBUF_INIT;\n \tstatic const char *format = \"  %m %s\";\n \tint fast_forward = 0, fast_backward = 0;\n+\tstruct diff_queue_struct diff_q_backup;\n \n \tif (is_null_sha1(two))\n \t\tmessage = \"(submodule deleted)\";\n@@ -83,6 +90,7 @@ void show_submodule_summary(FILE *f, const char *path,\n \t\tmessage = \"(commits not present)\";\n \n \tif (!message) {\n+\t\tdiff_q_copy(&diff_q_backup, &diff_queued_diff);\n \t\tinit_revisions(&rev, NULL);\n \t\tsetup_revisions(0, NULL, &rev, NULL);\n \t\trev.left_right = 1;\n@@ -146,6 +154,7 @@ void show_submodule_summary(FILE *f, const char *path,\n \t\t}\n \t\tclear_commit_marks(left, ~0);\n \t\tclear_commit_marks(right, ~0);\n+\t\tdiff_q_copy(&diff_queued_diff, &diff_q_backup);\n \t}\n \tstrbuf_release(&sb);\n }\n-- \n1.7.2.1.22.ge7bdd\n"},{"id":"147123","messageId":"AANLkTi=VPO-KLpA3SnKTxMbSBv3XeMMKjJr6oXNAr-vD@mail.gmail.com","threadId":"24629","inReplyTo":"1280933106-7016-1-git-send-email-zfuzesi@eaglet.hu","subject":"Re: [PATCH] submodule: show_submodule_summary: preserve diff queue","fromName":"Füzesi Zoltán","fromEmail":"zfuzesi@eaglet.hu","sentAt":"2010-08-04T18:15:42Z","receivedAt":"2010-08-04T18:15:42Z","isPatch":true,"sender":{"key":"zfuzesi@eaglet.hu","avatar":null},"body":"2010/8/4 Zoltán Füzesi <zfuzesi@eaglet.hu>:\n> git-diff with --submodule option stopped printing diff lines after a submodule\n> change, because show_submodule_summary reset diff queue.\n> ---\n>  submodule.c |    9 +++++++++\n>  1 files changed, 9 insertions(+), 0 deletions(-)\n>\n> diff --git a/submodule.c b/submodule.c\n> index 61cb6e2..5b57536 100644\n> --- a/submodule.c\n> +++ b/submodule.c\n> @@ -46,6 +46,12 @@ done:\n>        return ret;\n>  }\n>\n> +static void diff_q_copy(struct diff_queue_struct *dst,\n> +                       struct diff_queue_struct *src)\n> +{\n> +       memcpy(dst, src, sizeof(struct diff_queue_struct));\n> +}\n> +\n>  void handle_ignore_submodules_arg(struct diff_options *diffopt,\n>                                  const char *arg)\n>  {\n> @@ -71,6 +77,7 @@ void show_submodule_summary(FILE *f, const char *path,\n>        struct strbuf sb = STRBUF_INIT;\n>        static const char *format = \"  %m %s\";\n>        int fast_forward = 0, fast_backward = 0;\n> +       struct diff_queue_struct diff_q_backup;\n>\n>        if (is_null_sha1(two))\n>                message = \"(submodule deleted)\";\n> @@ -83,6 +90,7 @@ void show_submodule_summary(FILE *f, const char *path,\n>                message = \"(commits not present)\";\n>\n>        if (!message) {\n> +               diff_q_copy(&diff_q_backup, &diff_queued_diff);\n>                init_revisions(&rev, NULL);\n>                setup_revisions(0, NULL, &rev, NULL);\n>                rev.left_right = 1;\n> @@ -146,6 +154,7 @@ void show_submodule_summary(FILE *f, const char *path,\n>                }\n>                clear_commit_marks(left, ~0);\n>                clear_commit_marks(right, ~0);\n> +               diff_q_copy(&diff_queued_diff, &diff_q_backup);\n>        }\n>        strbuf_release(&sb);\n>  }\n> --\n> 1.7.2.1.22.ge7bdd\n>\n>\n\nhi, commit ee38d823f74bd8872c1e793f98a5b5523ee04646 makes my patch unnecessary.\n"}]}