mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
git-merge-ours: make it a builtin.
Except that this fixes a longstanding corner case bug by tightening the way underlying diff-index command is run, it is functionally equivalent to the scripted version. Signed-off-by: Thomas Harning Jr <harningt@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
a7d9da6c97
commit
a00a42ae33
3
Makefile
3
Makefile
@ -221,7 +221,7 @@ SCRIPT_SH = \
|
|||||||
git-sh-setup.sh \
|
git-sh-setup.sh \
|
||||||
git-am.sh \
|
git-am.sh \
|
||||||
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
|
git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \
|
||||||
git-merge-resolve.sh git-merge-ours.sh \
|
git-merge-resolve.sh \
|
||||||
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
|
git-lost-found.sh git-quiltimport.sh git-submodule.sh \
|
||||||
git-filter-branch.sh \
|
git-filter-branch.sh \
|
||||||
git-stash.sh
|
git-stash.sh
|
||||||
@ -353,6 +353,7 @@ BUILTIN_OBJS = \
|
|||||||
builtin-mailsplit.o \
|
builtin-mailsplit.o \
|
||||||
builtin-merge-base.o \
|
builtin-merge-base.o \
|
||||||
builtin-merge-file.o \
|
builtin-merge-file.o \
|
||||||
|
builtin-merge-ours.o \
|
||||||
builtin-mv.o \
|
builtin-mv.o \
|
||||||
builtin-name-rev.o \
|
builtin-name-rev.o \
|
||||||
builtin-pack-objects.o \
|
builtin-pack-objects.o \
|
||||||
|
28
builtin-merge-ours.c
Normal file
28
builtin-merge-ours.c
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Implementation of git-merge-ours.sh as builtin
|
||||||
|
*
|
||||||
|
* Copyright (c) 2007 Thomas Harning Jr
|
||||||
|
* Original:
|
||||||
|
* Original Copyright (c) 2005 Junio C Hamano
|
||||||
|
*
|
||||||
|
* Pretend we resolved the heads, but declare our tree trumps everybody else.
|
||||||
|
*/
|
||||||
|
#include "git-compat-util.h"
|
||||||
|
#include "builtin.h"
|
||||||
|
|
||||||
|
static const char *diff_index_args[] = {
|
||||||
|
"diff-index", "--quiet", "--cached", "HEAD", "--", NULL
|
||||||
|
};
|
||||||
|
#define NARGS (ARRAY_SIZE(diff_index_args) - 1)
|
||||||
|
|
||||||
|
int cmd_merge_ours(int argc, const char **argv, const char *prefix)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* We need to exit with 2 if the index does not match our HEAD tree,
|
||||||
|
* because the current index is what we will be committing as the
|
||||||
|
* merge result.
|
||||||
|
*/
|
||||||
|
if (cmd_diff_index(NARGS, diff_index_args, prefix))
|
||||||
|
exit(2);
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -51,6 +51,7 @@ extern int cmd_ls_tree(int argc, const char **argv, const char *prefix);
|
|||||||
extern int cmd_mailinfo(int argc, const char **argv, const char *prefix);
|
extern int cmd_mailinfo(int argc, const char **argv, const char *prefix);
|
||||||
extern int cmd_mailsplit(int argc, const char **argv, const char *prefix);
|
extern int cmd_mailsplit(int argc, const char **argv, const char *prefix);
|
||||||
extern int cmd_merge_base(int argc, const char **argv, const char *prefix);
|
extern int cmd_merge_base(int argc, const char **argv, const char *prefix);
|
||||||
|
extern int cmd_merge_ours(int argc, const char **argv, const char *prefix);
|
||||||
extern int cmd_merge_file(int argc, const char **argv, const char *prefix);
|
extern int cmd_merge_file(int argc, const char **argv, const char *prefix);
|
||||||
extern int cmd_mv(int argc, const char **argv, const char *prefix);
|
extern int cmd_mv(int argc, const char **argv, const char *prefix);
|
||||||
extern int cmd_name_rev(int argc, const char **argv, const char *prefix);
|
extern int cmd_name_rev(int argc, const char **argv, const char *prefix);
|
||||||
|
1
git.c
1
git.c
@ -325,6 +325,7 @@ static void handle_internal_command(int argc, const char **argv)
|
|||||||
{ "mailsplit", cmd_mailsplit },
|
{ "mailsplit", cmd_mailsplit },
|
||||||
{ "merge-base", cmd_merge_base, RUN_SETUP },
|
{ "merge-base", cmd_merge_base, RUN_SETUP },
|
||||||
{ "merge-file", cmd_merge_file },
|
{ "merge-file", cmd_merge_file },
|
||||||
|
{ "merge-ours", cmd_merge_ours, RUN_SETUP },
|
||||||
{ "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
|
{ "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
||||||
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
||||||
|
Loading…
Reference in New Issue
Block a user