Teach git log --check to return an appropriate exit code
authorPeter Valdemar Mørch <peter@morch.com>
Mon, 11 Aug 2008 06:46:24 +0000 (08:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 17 Aug 2008 23:26:21 +0000 (16:26 -0700)
Signed-off-by: Peter Valdemar Mørch <peter@morch.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-log.c

index f4975cf..ae71540 100644 (file)
@@ -217,6 +217,11 @@ static int cmd_log_walk(struct rev_info *rev)
        if (rev->early_output)
                finish_early_output(rev);
 
        if (rev->early_output)
                finish_early_output(rev);
 
+       /*
+        * For --check, the exit code is based on CHECK_FAILED being
+        * accumulated in rev->diffopt, so be careful to retain that state
+        * information if replacing rev->diffopt in this loop
+        */
        while ((commit = get_revision(rev)) != NULL) {
                log_tree_commit(rev, commit);
                if (!rev->reflog_info) {
        while ((commit = get_revision(rev)) != NULL) {
                log_tree_commit(rev, commit);
                if (!rev->reflog_info) {
@@ -227,6 +232,10 @@ static int cmd_log_walk(struct rev_info *rev)
                free_commit_list(commit->parents);
                commit->parents = NULL;
        }
                free_commit_list(commit->parents);
                commit->parents = NULL;
        }
+       if (rev->diffopt.output_format & DIFF_FORMAT_CHECKDIFF &&
+           DIFF_OPT_TST(&rev->diffopt, CHECK_FAILED)) {
+               return 02;
+       }
        return 0;
 }
 
        return 0;
 }