mirror of
https://github.com/git/git.git
synced 2024-12-04 15:34:05 +08:00
1b1dd23f2d
When you misuse a git command, you are shown the usage string. But this is currently shown in the dashed form. So if you just copy what you see, it will not work, when the dashed form is no longer supported. This patch makes git commands show the dash-less version. For shell scripts that do not specify OPTIONS_SPEC, git-sh-setup.sh generates a dash-less usage string now. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
#include "builtin.h"
|
|
#include "cache.h"
|
|
#include "commit.h"
|
|
|
|
static int show_merge_base(struct commit *rev1, struct commit *rev2, int show_all)
|
|
{
|
|
struct commit_list *result = get_merge_bases(rev1, rev2, 0);
|
|
|
|
if (!result)
|
|
return 1;
|
|
|
|
while (result) {
|
|
printf("%s\n", sha1_to_hex(result->item->object.sha1));
|
|
if (!show_all)
|
|
return 0;
|
|
result = result->next;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static const char merge_base_usage[] =
|
|
"git merge-base [--all] <commit-id> <commit-id>";
|
|
|
|
int cmd_merge_base(int argc, const char **argv, const char *prefix)
|
|
{
|
|
struct commit *rev1, *rev2;
|
|
unsigned char rev1key[20], rev2key[20];
|
|
int show_all = 0;
|
|
|
|
git_config(git_default_config, NULL);
|
|
|
|
while (1 < argc && argv[1][0] == '-') {
|
|
const char *arg = argv[1];
|
|
if (!strcmp(arg, "-a") || !strcmp(arg, "--all"))
|
|
show_all = 1;
|
|
else
|
|
usage(merge_base_usage);
|
|
argc--; argv++;
|
|
}
|
|
if (argc != 3)
|
|
usage(merge_base_usage);
|
|
if (get_sha1(argv[1], rev1key))
|
|
die("Not a valid object name %s", argv[1]);
|
|
if (get_sha1(argv[2], rev2key))
|
|
die("Not a valid object name %s", argv[2]);
|
|
rev1 = lookup_commit_reference(rev1key);
|
|
rev2 = lookup_commit_reference(rev2key);
|
|
if (!rev1 || !rev2)
|
|
return 1;
|
|
return show_merge_base(rev1, rev2, show_all);
|
|
}
|