提交 20b178de 编写于 作者: F Finn Arne Gangstad 提交者: Junio C Hamano

Improved submodule merge support

When merging conflicting submodule changes from a supermodule, generate
a conflict message saying what went wrong. Also leave the tree in a state
where git status shows the conflict, and git submodule status gives the user
enough information to do the merge manally. Previously this would just fail.
Signed-off-by: NFinn Arne Gangstad <finnag@pvv.org>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 5909651e
......@@ -549,6 +549,10 @@ static void update_file_flags(const unsigned char *sha,
void *buf;
unsigned long size;
if (S_ISGITLINK(mode))
die("cannot read object %s '%s': It is a submodule!",
sha1_to_hex(sha), path);
buf = read_sha1_file(sha, &type, &size);
if (!buf)
die("cannot read object %s '%s'", sha1_to_hex(sha), path);
......@@ -1463,10 +1467,13 @@ static int process_entry(const char *path, struct stage_data *entry,
mfi = merge_file(&o, &a, &b,
branch1, branch2);
clean_merge = mfi.clean;
if (mfi.clean)
update_file(1, mfi.sha, mfi.mode, path);
else if (S_ISGITLINK(mfi.mode))
output(1, "CONFLICT (submodule): Merge conflict in %s "
"- needs %s", path, sha1_to_hex(b.sha1));
else {
clean_merge = 0;
output(1, "CONFLICT (%s): Merge conflict in %s",
reason, path);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册