diff options
Diffstat (limited to 'notes-merge.c')
-rw-r--r-- | notes-merge.c | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/notes-merge.c b/notes-merge.c index b3d1dab51f..f00059520e 100644 --- a/notes-merge.c +++ b/notes-merge.c @@ -298,12 +298,8 @@ static void write_buf_to_worktree(const unsigned char *obj, char *path = git_pathdup(NOTES_MERGE_WORKTREE "/%s", sha1_to_hex(obj)); if (safe_create_leading_directories_const(path)) die_errno("unable to create directory for '%s'", path); - if (file_exists(path)) - die("found existing file at '%s'", path); - fd = open(path, O_WRONLY | O_TRUNC | O_CREAT, 0666); - if (fd < 0) - die_errno("failed to open '%s'", path); + fd = xopen(path, O_WRONLY | O_EXCL | O_CREAT, 0666); while (size > 0) { long ret = write_in_full(fd, buf, size); @@ -602,15 +598,15 @@ int notes_merge(struct notes_merge_options *o, if (o->verbosity >= 4) printf("No merge base found; doing history-less merge\n"); } else if (!bases->next) { - base_sha1 = bases->item->object.sha1; - base_tree_sha1 = bases->item->tree->object.sha1; + base_sha1 = bases->item->object.oid.hash; + base_tree_sha1 = bases->item->tree->object.oid.hash; if (o->verbosity >= 4) printf("One merge base found (%.7s)\n", sha1_to_hex(base_sha1)); } else { /* TODO: How to handle multiple merge-bases? */ - base_sha1 = bases->item->object.sha1; - base_tree_sha1 = bases->item->tree->object.sha1; + base_sha1 = bases->item->object.oid.hash; + base_tree_sha1 = bases->item->tree->object.oid.hash; if (o->verbosity >= 3) printf("Multiple merge bases found. Using the first " "(%.7s)\n", sha1_to_hex(base_sha1)); @@ -618,27 +614,27 @@ int notes_merge(struct notes_merge_options *o, if (o->verbosity >= 4) printf("Merging remote commit %.7s into local commit %.7s with " - "merge-base %.7s\n", sha1_to_hex(remote->object.sha1), - sha1_to_hex(local->object.sha1), + "merge-base %.7s\n", oid_to_hex(&remote->object.oid), + oid_to_hex(&local->object.oid), sha1_to_hex(base_sha1)); - if (!hashcmp(remote->object.sha1, base_sha1)) { + if (!hashcmp(remote->object.oid.hash, base_sha1)) { /* Already merged; result == local commit */ if (o->verbosity >= 2) printf("Already up-to-date!\n"); - hashcpy(result_sha1, local->object.sha1); + hashcpy(result_sha1, local->object.oid.hash); goto found_result; } - if (!hashcmp(local->object.sha1, base_sha1)) { + if (!hashcmp(local->object.oid.hash, base_sha1)) { /* Fast-forward; result == remote commit */ if (o->verbosity >= 2) printf("Fast-forward\n"); - hashcpy(result_sha1, remote->object.sha1); + hashcpy(result_sha1, remote->object.oid.hash); goto found_result; } - result = merge_from_diffs(o, base_tree_sha1, local->tree->object.sha1, - remote->tree->object.sha1, local_tree); + result = merge_from_diffs(o, base_tree_sha1, local->tree->object.oid.hash, + remote->tree->object.oid.hash, local_tree); if (result != 0) { /* non-trivial merge (with or without conflicts) */ /* Commit (partial) result */ |