Merge branch 'bw/object-id'
Conversion from uchar[20] to struct object_id continues. * bw/object-id: (33 commits) diff: rename diff_fill_sha1_info to diff_fill_oid_info diffcore-rename: use is_empty_blob_oid tree-diff: convert path_appendnew to object_id tree-diff: convert diff_tree_paths to struct object_id tree-diff: convert try_to_follow_renames to struct object_id builtin/diff-tree: cleanup references to sha1 diff-tree: convert diff_tree_sha1 to struct object_id notes-merge: convert write_note_to_worktree to struct object_id notes-merge: convert verify_notes_filepair to struct object_id notes-merge: convert find_notes_merge_pair_ps to struct object_id notes-merge: convert merge_from_diffs to struct object_id notes-merge: convert notes_merge* to struct object_id tree-diff: convert diff_root_tree_sha1 to struct object_id combine-diff: convert find_paths_* to struct object_id combine-diff: convert diff_tree_combined to struct object_id diff: convert diff_flush_patch_id to struct object_id patch-ids: convert to struct object_id diff: finish conversion for prepare_temp_file to struct object_id diff: convert reuse_worktree_file to struct object_id diff: convert fill_filespec to struct object_id ...
This commit is contained in:
136
builtin/notes.c
136
builtin/notes.c
@ -109,11 +109,11 @@ static void free_note_data(struct note_data *d)
|
||||
strbuf_release(&d->buf);
|
||||
}
|
||||
|
||||
static int list_each_note(const unsigned char *object_sha1,
|
||||
const unsigned char *note_sha1, char *note_path,
|
||||
static int list_each_note(const struct object_id *object_oid,
|
||||
const struct object_id *note_oid, char *note_path,
|
||||
void *cb_data)
|
||||
{
|
||||
printf("%s %s\n", sha1_to_hex(note_sha1), sha1_to_hex(object_sha1));
|
||||
printf("%s %s\n", oid_to_hex(note_oid), oid_to_hex(object_oid));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -129,10 +129,10 @@ static void copy_obj_to_fd(int fd, const unsigned char *sha1)
|
||||
}
|
||||
}
|
||||
|
||||
static void write_commented_object(int fd, const unsigned char *object)
|
||||
static void write_commented_object(int fd, const struct object_id *object)
|
||||
{
|
||||
const char *show_args[5] =
|
||||
{"show", "--stat", "--no-notes", sha1_to_hex(object), NULL};
|
||||
{"show", "--stat", "--no-notes", oid_to_hex(object), NULL};
|
||||
struct child_process show = CHILD_PROCESS_INIT;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
struct strbuf cbuf = STRBUF_INIT;
|
||||
@ -145,7 +145,7 @@ static void write_commented_object(int fd, const unsigned char *object)
|
||||
show.git_cmd = 1;
|
||||
if (start_command(&show))
|
||||
die(_("unable to start 'show' for object '%s'"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(object));
|
||||
|
||||
if (strbuf_read(&buf, show.out, 0) < 0)
|
||||
die_errno(_("could not read 'show' output"));
|
||||
@ -157,10 +157,10 @@ static void write_commented_object(int fd, const unsigned char *object)
|
||||
|
||||
if (finish_command(&show))
|
||||
die(_("failed to finish 'show' for object '%s'"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(object));
|
||||
}
|
||||
|
||||
static void prepare_note_data(const unsigned char *object, struct note_data *d,
|
||||
static void prepare_note_data(const struct object_id *object, struct note_data *d,
|
||||
const unsigned char *old_note)
|
||||
{
|
||||
if (d->use_editor || !d->given) {
|
||||
@ -243,16 +243,16 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
|
||||
{
|
||||
struct note_data *d = opt->value;
|
||||
char *buf;
|
||||
unsigned char object[20];
|
||||
struct object_id object;
|
||||
enum object_type type;
|
||||
unsigned long len;
|
||||
|
||||
if (d->buf.len)
|
||||
strbuf_addch(&d->buf, '\n');
|
||||
|
||||
if (get_sha1(arg, object))
|
||||
if (get_oid(arg, &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), arg);
|
||||
if (!(buf = read_sha1_file(object, &type, &len))) {
|
||||
if (!(buf = read_sha1_file(object.hash, &type, &len))) {
|
||||
free(buf);
|
||||
die(_("failed to read object '%s'."), arg);
|
||||
}
|
||||
@ -292,7 +292,7 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
|
||||
}
|
||||
|
||||
while (strbuf_getline_lf(&buf, stdin) != EOF) {
|
||||
unsigned char from_obj[20], to_obj[20];
|
||||
struct object_id from_obj, to_obj;
|
||||
struct strbuf **split;
|
||||
int err;
|
||||
|
||||
@ -301,15 +301,15 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
|
||||
die(_("malformed input line: '%s'."), buf.buf);
|
||||
strbuf_rtrim(split[0]);
|
||||
strbuf_rtrim(split[1]);
|
||||
if (get_sha1(split[0]->buf, from_obj))
|
||||
if (get_oid(split[0]->buf, &from_obj))
|
||||
die(_("failed to resolve '%s' as a valid ref."), split[0]->buf);
|
||||
if (get_sha1(split[1]->buf, to_obj))
|
||||
if (get_oid(split[1]->buf, &to_obj))
|
||||
die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
|
||||
|
||||
if (rewrite_cmd)
|
||||
err = copy_note_for_rewrite(c, from_obj, to_obj);
|
||||
err = copy_note_for_rewrite(c, &from_obj, &to_obj);
|
||||
else
|
||||
err = copy_note(t, from_obj, to_obj, force,
|
||||
err = copy_note(t, &from_obj, &to_obj, force,
|
||||
combine_notes_overwrite);
|
||||
|
||||
if (err) {
|
||||
@ -352,8 +352,8 @@ static struct notes_tree *init_notes_check(const char *subcommand,
|
||||
static int list(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
struct notes_tree *t;
|
||||
unsigned char object[20];
|
||||
const unsigned char *note;
|
||||
struct object_id object;
|
||||
const struct object_id *note;
|
||||
int retval = -1;
|
||||
struct option options[] = {
|
||||
OPT_END()
|
||||
@ -370,15 +370,15 @@ static int list(int argc, const char **argv, const char *prefix)
|
||||
|
||||
t = init_notes_check("list", 0);
|
||||
if (argc) {
|
||||
if (get_sha1(argv[0], object))
|
||||
if (get_oid(argv[0], &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), argv[0]);
|
||||
note = get_note(t, object);
|
||||
note = get_note(t, &object);
|
||||
if (note) {
|
||||
puts(sha1_to_hex(note));
|
||||
puts(oid_to_hex(note));
|
||||
retval = 0;
|
||||
} else
|
||||
retval = error(_("no note found for object %s."),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
} else
|
||||
retval = for_each_note(t, 0, list_each_note, NULL);
|
||||
|
||||
@ -393,8 +393,8 @@ static int add(int argc, const char **argv, const char *prefix)
|
||||
int force = 0, allow_empty = 0;
|
||||
const char *object_ref;
|
||||
struct notes_tree *t;
|
||||
unsigned char object[20], new_note[20];
|
||||
const unsigned char *note;
|
||||
struct object_id object, new_note;
|
||||
const struct object_id *note;
|
||||
struct note_data d = { 0, 0, NULL, STRBUF_INIT };
|
||||
struct option options[] = {
|
||||
{ OPTION_CALLBACK, 'm', "message", &d, N_("message"),
|
||||
@ -425,11 +425,11 @@ static int add(int argc, const char **argv, const char *prefix)
|
||||
|
||||
object_ref = argc > 1 ? argv[1] : "HEAD";
|
||||
|
||||
if (get_sha1(object_ref, object))
|
||||
if (get_oid(object_ref, &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), object_ref);
|
||||
|
||||
t = init_notes_check("add", NOTES_INIT_WRITABLE);
|
||||
note = get_note(t, object);
|
||||
note = get_note(t, &object);
|
||||
|
||||
if (note) {
|
||||
if (!force) {
|
||||
@ -439,7 +439,7 @@ static int add(int argc, const char **argv, const char *prefix)
|
||||
return error(_("Cannot add notes. "
|
||||
"Found existing notes for object %s. "
|
||||
"Use '-f' to overwrite existing notes"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
}
|
||||
/*
|
||||
* Redirect to "edit" subcommand.
|
||||
@ -452,19 +452,19 @@ static int add(int argc, const char **argv, const char *prefix)
|
||||
return append_edit(argc, argv, prefix);
|
||||
}
|
||||
fprintf(stderr, _("Overwriting existing notes for object %s\n"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
}
|
||||
|
||||
prepare_note_data(object, &d, note);
|
||||
prepare_note_data(&object, &d, note->hash);
|
||||
if (d.buf.len || allow_empty) {
|
||||
write_note_data(&d, new_note);
|
||||
if (add_note(t, object, new_note, combine_notes_overwrite))
|
||||
write_note_data(&d, new_note.hash);
|
||||
if (add_note(t, &object, &new_note, combine_notes_overwrite))
|
||||
die("BUG: combine_notes_overwrite failed");
|
||||
commit_notes(t, "Notes added by 'git notes add'");
|
||||
} else {
|
||||
fprintf(stderr, _("Removing note for object %s\n"),
|
||||
sha1_to_hex(object));
|
||||
remove_note(t, object);
|
||||
oid_to_hex(&object));
|
||||
remove_note(t, object.hash);
|
||||
commit_notes(t, "Notes removed by 'git notes add'");
|
||||
}
|
||||
|
||||
@ -476,9 +476,9 @@ static int add(int argc, const char **argv, const char *prefix)
|
||||
static int copy(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int retval = 0, force = 0, from_stdin = 0;
|
||||
const unsigned char *from_note, *note;
|
||||
const struct object_id *from_note, *note;
|
||||
const char *object_ref;
|
||||
unsigned char object[20], from_obj[20];
|
||||
struct object_id object, from_obj;
|
||||
struct notes_tree *t;
|
||||
const char *rewrite_cmd = NULL;
|
||||
struct option options[] = {
|
||||
@ -511,37 +511,37 @@ static int copy(int argc, const char **argv, const char *prefix)
|
||||
usage_with_options(git_notes_copy_usage, options);
|
||||
}
|
||||
|
||||
if (get_sha1(argv[0], from_obj))
|
||||
if (get_oid(argv[0], &from_obj))
|
||||
die(_("failed to resolve '%s' as a valid ref."), argv[0]);
|
||||
|
||||
object_ref = 1 < argc ? argv[1] : "HEAD";
|
||||
|
||||
if (get_sha1(object_ref, object))
|
||||
if (get_oid(object_ref, &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), object_ref);
|
||||
|
||||
t = init_notes_check("copy", NOTES_INIT_WRITABLE);
|
||||
note = get_note(t, object);
|
||||
note = get_note(t, &object);
|
||||
|
||||
if (note) {
|
||||
if (!force) {
|
||||
retval = error(_("Cannot copy notes. Found existing "
|
||||
"notes for object %s. Use '-f' to "
|
||||
"overwrite existing notes"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
goto out;
|
||||
}
|
||||
fprintf(stderr, _("Overwriting existing notes for object %s\n"),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
}
|
||||
|
||||
from_note = get_note(t, from_obj);
|
||||
from_note = get_note(t, &from_obj);
|
||||
if (!from_note) {
|
||||
retval = error(_("missing notes on source object %s. Cannot "
|
||||
"copy."), sha1_to_hex(from_obj));
|
||||
"copy."), oid_to_hex(&from_obj));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (add_note(t, object, from_note, combine_notes_overwrite))
|
||||
if (add_note(t, &object, from_note, combine_notes_overwrite))
|
||||
die("BUG: combine_notes_overwrite failed");
|
||||
commit_notes(t, "Notes added by 'git notes copy'");
|
||||
out:
|
||||
@ -554,8 +554,8 @@ static int append_edit(int argc, const char **argv, const char *prefix)
|
||||
int allow_empty = 0;
|
||||
const char *object_ref;
|
||||
struct notes_tree *t;
|
||||
unsigned char object[20], new_note[20];
|
||||
const unsigned char *note;
|
||||
struct object_id object, new_note;
|
||||
const struct object_id *note;
|
||||
char *logmsg;
|
||||
const char * const *usage;
|
||||
struct note_data d = { 0, 0, NULL, STRBUF_INIT };
|
||||
@ -594,19 +594,19 @@ static int append_edit(int argc, const char **argv, const char *prefix)
|
||||
|
||||
object_ref = 1 < argc ? argv[1] : "HEAD";
|
||||
|
||||
if (get_sha1(object_ref, object))
|
||||
if (get_oid(object_ref, &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), object_ref);
|
||||
|
||||
t = init_notes_check(argv[0], NOTES_INIT_WRITABLE);
|
||||
note = get_note(t, object);
|
||||
note = get_note(t, &object);
|
||||
|
||||
prepare_note_data(object, &d, edit ? note : NULL);
|
||||
prepare_note_data(&object, &d, edit && note ? note->hash : NULL);
|
||||
|
||||
if (note && !edit) {
|
||||
/* Append buf to previous note contents */
|
||||
unsigned long size;
|
||||
enum object_type type;
|
||||
char *prev_buf = read_sha1_file(note, &type, &size);
|
||||
char *prev_buf = read_sha1_file(note->hash, &type, &size);
|
||||
|
||||
strbuf_grow(&d.buf, size + 1);
|
||||
if (d.buf.len && prev_buf && size)
|
||||
@ -617,14 +617,14 @@ static int append_edit(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
|
||||
if (d.buf.len || allow_empty) {
|
||||
write_note_data(&d, new_note);
|
||||
if (add_note(t, object, new_note, combine_notes_overwrite))
|
||||
write_note_data(&d, new_note.hash);
|
||||
if (add_note(t, &object, &new_note, combine_notes_overwrite))
|
||||
die("BUG: combine_notes_overwrite failed");
|
||||
logmsg = xstrfmt("Notes added by 'git notes %s'", argv[0]);
|
||||
} else {
|
||||
fprintf(stderr, _("Removing note for object %s\n"),
|
||||
sha1_to_hex(object));
|
||||
remove_note(t, object);
|
||||
oid_to_hex(&object));
|
||||
remove_note(t, object.hash);
|
||||
logmsg = xstrfmt("Notes removed by 'git notes %s'", argv[0]);
|
||||
}
|
||||
commit_notes(t, logmsg);
|
||||
@ -639,8 +639,8 @@ static int show(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
const char *object_ref;
|
||||
struct notes_tree *t;
|
||||
unsigned char object[20];
|
||||
const unsigned char *note;
|
||||
struct object_id object;
|
||||
const struct object_id *note;
|
||||
int retval;
|
||||
struct option options[] = {
|
||||
OPT_END()
|
||||
@ -656,17 +656,17 @@ static int show(int argc, const char **argv, const char *prefix)
|
||||
|
||||
object_ref = argc ? argv[0] : "HEAD";
|
||||
|
||||
if (get_sha1(object_ref, object))
|
||||
if (get_oid(object_ref, &object))
|
||||
die(_("failed to resolve '%s' as a valid ref."), object_ref);
|
||||
|
||||
t = init_notes_check("show", 0);
|
||||
note = get_note(t, object);
|
||||
note = get_note(t, &object);
|
||||
|
||||
if (!note)
|
||||
retval = error(_("no note found for object %s."),
|
||||
sha1_to_hex(object));
|
||||
oid_to_hex(&object));
|
||||
else {
|
||||
const char *show_args[3] = {"show", sha1_to_hex(note), NULL};
|
||||
const char *show_args[3] = {"show", oid_to_hex(note), NULL};
|
||||
retval = execv_git_cmd(show_args);
|
||||
}
|
||||
free_notes(t);
|
||||
@ -726,7 +726,7 @@ static int merge_commit(struct notes_merge_options *o)
|
||||
if (!o->local_ref)
|
||||
die(_("failed to resolve NOTES_MERGE_REF"));
|
||||
|
||||
if (notes_merge_commit(o, t, partial, oid.hash))
|
||||
if (notes_merge_commit(o, t, partial, &oid))
|
||||
die(_("failed to finalize notes merge"));
|
||||
|
||||
/* Reuse existing commit message in reflog message */
|
||||
@ -762,7 +762,7 @@ static int git_config_get_notes_strategy(const char *key,
|
||||
static int merge(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
struct strbuf remote_ref = STRBUF_INIT, msg = STRBUF_INIT;
|
||||
unsigned char result_sha1[20];
|
||||
struct object_id result_oid;
|
||||
struct notes_tree *t;
|
||||
struct notes_merge_options o;
|
||||
int do_merge = 0, do_commit = 0, do_abort = 0;
|
||||
@ -844,16 +844,16 @@ static int merge(int argc, const char **argv, const char *prefix)
|
||||
remote_ref.buf, default_notes_ref());
|
||||
strbuf_add(&(o.commit_msg), msg.buf + 7, msg.len - 7); /* skip "notes: " */
|
||||
|
||||
result = notes_merge(&o, t, result_sha1);
|
||||
result = notes_merge(&o, t, &result_oid);
|
||||
|
||||
if (result >= 0) /* Merge resulted (trivially) in result_sha1 */
|
||||
if (result >= 0) /* Merge resulted (trivially) in result_oid */
|
||||
/* Update default notes ref with new commit */
|
||||
update_ref(msg.buf, default_notes_ref(), result_sha1, NULL,
|
||||
update_ref(msg.buf, default_notes_ref(), result_oid.hash, NULL,
|
||||
0, UPDATE_REFS_DIE_ON_ERR);
|
||||
else { /* Merge has unresolved conflicts */
|
||||
const struct worktree *wt;
|
||||
/* Update .git/NOTES_MERGE_PARTIAL with partial merge result */
|
||||
update_ref(msg.buf, "NOTES_MERGE_PARTIAL", result_sha1, NULL,
|
||||
update_ref(msg.buf, "NOTES_MERGE_PARTIAL", result_oid.hash, NULL,
|
||||
0, UPDATE_REFS_DIE_ON_ERR);
|
||||
/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
|
||||
wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
|
||||
@ -880,10 +880,10 @@ static int merge(int argc, const char **argv, const char *prefix)
|
||||
static int remove_one_note(struct notes_tree *t, const char *name, unsigned flag)
|
||||
{
|
||||
int status;
|
||||
unsigned char sha1[20];
|
||||
if (get_sha1(name, sha1))
|
||||
struct object_id oid;
|
||||
if (get_oid(name, &oid))
|
||||
return error(_("Failed to resolve '%s' as a valid ref."), name);
|
||||
status = remove_note(t, sha1);
|
||||
status = remove_note(t, oid.hash);
|
||||
if (status)
|
||||
fprintf(stderr, _("Object %s has no note\n"), name);
|
||||
else
|
||||
|
Reference in New Issue
Block a user