[PATCH] git-merge-cache -q doesn't complain about failing merge program
authorPetr Baudis <pasky@suse.cz>
Fri, 29 Jul 2005 12:53:38 +0000 (14:53 +0200)
committerJunio C Hamano <junkio@cox.net>
Mon, 1 Aug 2005 22:20:14 +0000 (15:20 -0700)
git-merge-cache reporting failed merge program is undesirable for
Cogito, since it emits its own more appropriate error message in that
case. However, I want to show other possible git-merge-cache error
messages. So -q will just silence this particular error.

Signed-off-by: Petr Baudis <pasky@ucw.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/git-merge-cache.txt
merge-cache.c
index 3fb4d492b1d5c6aa62824872a414dbdf429d077f..f1fbb5ddec3d37dbeff1d0b89ba61dfea8915350 100644 (file)
@@ -9,7 +9,7 @@ git-merge-cache - Runs a merge for files needing merging
 
 SYNOPSIS
 --------
 
 SYNOPSIS
 --------
-'git-merge-cache' [-o] <merge-program> (-a | -- | <file>\*) 
+'git-merge-cache' [-o] [-q] <merge-program> (-a | -- | <file>\*) 
 
 DESCRIPTION
 -----------
 
 DESCRIPTION
 -----------
@@ -32,6 +32,11 @@ OPTIONS
        returned errors, and only return the error code after all the
        merges are over.
 
        returned errors, and only return the error code after all the
        merges are over.
 
+-q::
+       Do not complain about failed merge program (the merge program
+       failure usually indicates conflicts during merge). This is for
+       porcelains which might want to emit custom messages.
+
 If "git-merge-cache" is called with multiple <file>s (or -a) then it
 processes them in turn only stopping if merge returns a non-zero exit
 code.
 If "git-merge-cache" is called with multiple <file>s (or -a) then it
 processes them in turn only stopping if merge returns a non-zero exit
 code.
@@ -40,7 +45,7 @@ Typically this is run with the a script calling the merge command from
 the RCS package.
 
 A sample script called "git-merge-one-file-script" is included in the
 the RCS package.
 
 A sample script called "git-merge-one-file-script" is included in the
-ditribution.
+distribution.
 
 ALERT ALERT ALERT! The git "merge object order" is different from the
 RCS "merge" program merge object order. In the above ordering, the
 
 ALERT ALERT ALERT! The git "merge object order" is different from the
 RCS "merge" program merge object order. In the above ordering, the
index 37c72d26ca587bd700412cd9d7cd99b08fd2da3a..b2893e6e2d524542fa375d409a36623cb2f5478d 100644 (file)
@@ -5,7 +5,7 @@
 
 static const char *pgm = NULL;
 static const char *arguments[8];
 
 static const char *pgm = NULL;
 static const char *arguments[8];
-static int one_shot;
+static int one_shot, quiet;
 static int err;
 
 static void run_program(void)
 static int err;
 
 static void run_program(void)
@@ -27,10 +27,13 @@ static void run_program(void)
                die("unable to execute '%s'", pgm);
        }
        if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status)) {
                die("unable to execute '%s'", pgm);
        }
        if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status)) {
-               if (one_shot)
+               if (one_shot) {
                        err++;
                        err++;
-               else
-                       die("merge program failed");
+               } else {
+                       if (quiet)
+                               die("merge program failed");
+                       exit(1);
+               }
        }
 }
 
        }
 }
 
@@ -97,15 +100,19 @@ int main(int argc, char **argv)
        int i, force_file = 0;
 
        if (argc < 3)
        int i, force_file = 0;
 
        if (argc < 3)
-               usage("git-merge-cache [-o] <merge-program> (-a | <filename>*)");
+               usage("git-merge-cache [-o] [-q] <merge-program> (-a | <filename>*)");
 
        read_cache();
 
        i = 1;
 
        read_cache();
 
        i = 1;
-       if (!strcmp(argv[1], "-o")) {
+       if (!strcmp(argv[i], "-o")) {
                one_shot = 1;
                i++;
        }
                one_shot = 1;
                i++;
        }
+       if (!strcmp(argv[i], "-q")) {
+               quiet = 1;
+               i++;
+       }
        pgm = argv[i++];
        for (; i < argc; i++) {
                char *arg = argv[i];
        pgm = argv[i++];
        for (; i < argc; i++) {
                char *arg = argv[i];
@@ -122,7 +129,7 @@ int main(int argc, char **argv)
                }
                merge_file(arg);
        }
                }
                merge_file(arg);
        }
-       if (err)
+       if (err && quiet)
                die("merge program failed");
                die("merge program failed");
-       return 0;
+       return err;
 }
 }