Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-12-24 13:18:35 +0300
committerJunio C Hamano <junkio@cox.net>2006-12-24 13:18:35 +0300
commite036c90a913889dfa8097ebe73b619370e0c6f32 (patch)
tree2d910b13395345d9d9bc7c9137d1f6e9bb71d64a
parent9def2138a17325c68961c3b1e6c967d33f28a4f1 (diff)
parente0ec18192db8a5f80705a81dfaa1caa3e6c48c1a (diff)
Merge branch 'sb/merge-friendly'
* sb/merge-friendly: Display 'theirs' branch name when possible in merge. Use extended SHA1 syntax in merge-recursive conflicts.
-rwxr-xr-xgit-merge.sh2
-rw-r--r--merge-recursive.c21
-rw-r--r--t/t6024-recursive-merge.sh6
3 files changed, 23 insertions, 6 deletions
diff --git a/git-merge.sh b/git-merge.sh
index aec215e725..7dd0a11236 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -221,6 +221,8 @@ do
remotehead=$(git-rev-parse --verify "$remote"^0 2>/dev/null) ||
die "$remote - not something we can merge"
remoteheads="${remoteheads}$remotehead "
+ eval GITHEAD_$remotehead='"$remote"'
+ export GITHEAD_$remotehead
done
set x $remoteheads ; shift
diff --git a/merge-recursive.c b/merge-recursive.c
index ae7ae4cd2a..ca4f19e34d 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -649,8 +649,8 @@ static struct merge_file_info merge_file(struct diff_filespec *o,
char *name1, *name2;
int merge_status;
- name1 = xstrdup(mkpath("%s/%s", branch1, a->path));
- name2 = xstrdup(mkpath("%s/%s", branch2, b->path));
+ name1 = xstrdup(mkpath("%s:%s", branch1, a->path));
+ name2 = xstrdup(mkpath("%s:%s", branch2, b->path));
fill_mm(o->sha1, &orig);
fill_mm(a->sha1, &src1);
@@ -1263,6 +1263,18 @@ static struct commit *get_ref(const char *ref)
return (struct commit *)object;
}
+static const char *better_branch_name(const char *branch)
+{
+ static char githead_env[8 + 40 + 1];
+ char *name;
+
+ if (strlen(branch) != 40)
+ return branch;
+ sprintf(githead_env, "GITHEAD_%s", branch);
+ name = getenv(githead_env);
+ return name ? name : branch;
+}
+
int main(int argc, char *argv[])
{
static const char *bases[2];
@@ -1293,11 +1305,14 @@ int main(int argc, char *argv[])
branch1 = argv[++i];
branch2 = argv[++i];
- printf("Merging %s with %s\n", branch1, branch2);
h1 = get_ref(branch1);
h2 = get_ref(branch2);
+ branch1 = better_branch_name(branch1);
+ branch2 = better_branch_name(branch2);
+ printf("Merging %s with %s\n", branch1, branch2);
+
if (bases_count == 1) {
struct commit *ancestor = get_ref(bases[0]);
clean = merge(h1, h2, branch1, branch2, 0, ancestor, &result);
diff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh
index 964010e764..69b18f7d81 100644
--- a/t/t6024-recursive-merge.sh
+++ b/t/t6024-recursive-merge.sh
@@ -59,18 +59,18 @@ GIT_AUTHOR_DATE="2006-12-12 23:00:08" git commit -m F
test_expect_failure "combined merge conflicts" "git merge -m final G"
cat > expect << EOF
-<<<<<<< HEAD/a1
+<<<<<<< HEAD:a1
F
=======
G
->>>>>>> 26f86b677eb03d4d956dbe108b29cb77061c1e73/a1
+>>>>>>> G:a1
EOF
test_expect_success "result contains a conflict" "diff -u expect a1"
git ls-files --stage > out
cat > expect << EOF
-100644 f16f906ab60483c100d1241dfc39868de9ec9fcb 1 a1
+100644 da056ce14a2241509897fa68bb2b3b6e6194ef9e 1 a1
100644 cf84443e49e1b366fac938711ddf4be2d4d1d9e9 2 a1
100644 fd7923529855d0b274795ae3349c5e0438333979 3 a1
EOF