提交 bbd14cb0 编写于 作者: P Petr Baudis 提交者: Junio C Hamano

[PATCH] git-merge-cache -q doesn't complain about failing merge program

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: NPetr Baudis <pasky@ucw.cz>
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 4d8fa916
...@@ -9,7 +9,7 @@ git-merge-cache - Runs a merge for files needing merging ...@@ -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 ...@@ -32,6 +32,11 @@ OPTIONS
returned errors, and only return the error code after all the returned errors, and only return the error code after all the
merges are over. 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 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 processes them in turn only stopping if merge returns a non-zero exit
code. code.
...@@ -40,7 +45,7 @@ Typically this is run with the a script calling the merge command from ...@@ -40,7 +45,7 @@ Typically this is run with the a script calling the merge command from
the RCS package. the RCS package.
A sample script called "git-merge-one-file-script" is included in the 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 ALERT ALERT ALERT! The git "merge object order" is different from the
RCS "merge" program merge object order. In the above ordering, the RCS "merge" program merge object order. In the above ordering, the
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
static const char *pgm = NULL; static const char *pgm = NULL;
static const char *arguments[8]; static const char *arguments[8];
static int one_shot; static int one_shot, quiet;
static int err; static int err;
static void run_program(void) static void run_program(void)
...@@ -27,10 +27,13 @@ static void run_program(void) ...@@ -27,10 +27,13 @@ static void run_program(void)
die("unable to execute '%s'", pgm); die("unable to execute '%s'", pgm);
} }
if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status)) { if (waitpid(pid, &status, 0) < 0 || !WIFEXITED(status) || WEXITSTATUS(status)) {
if (one_shot) if (one_shot) {
err++; err++;
else } else {
die("merge program failed"); if (quiet)
die("merge program failed");
exit(1);
}
} }
} }
...@@ -97,15 +100,19 @@ int main(int argc, char **argv) ...@@ -97,15 +100,19 @@ int main(int argc, char **argv)
int i, force_file = 0; int i, force_file = 0;
if (argc < 3) if (argc < 3)
usage("git-merge-cache [-o] <merge-program> (-a | <filename>*)"); usage("git-merge-cache [-o] [-q] <merge-program> (-a | <filename>*)");
read_cache(); read_cache();
i = 1; i = 1;
if (!strcmp(argv[1], "-o")) { if (!strcmp(argv[i], "-o")) {
one_shot = 1; one_shot = 1;
i++; i++;
} }
if (!strcmp(argv[i], "-q")) {
quiet = 1;
i++;
}
pgm = argv[i++]; pgm = argv[i++];
for (; i < argc; i++) { for (; i < argc; i++) {
char *arg = argv[i]; char *arg = argv[i];
...@@ -122,7 +129,7 @@ int main(int argc, char **argv) ...@@ -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;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册