1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-11 10:06:35 +02:00

builtin/notes: convert to struct object_id

Convert most of the static functions to use struct object_id.  In
addition, convert copy_notes_for_rewrite and its callers.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2017-05-30 10:30:42 -07:00 committed by Junio C Hamano
parent fb61e4d3ab
commit bb7e473971
5 changed files with 60 additions and 60 deletions

View File

@ -563,7 +563,7 @@ static int copy_notes_for_rebase(const struct am_state *state)
goto finish; goto finish;
} }
if (copy_note_for_rewrite(c, from_obj.hash, to_obj.hash)) if (copy_note_for_rewrite(c, &from_obj, &to_obj))
ret = error(_("Failed to copy notes from '%s' to '%s'"), ret = error(_("Failed to copy notes from '%s' to '%s'"),
oid_to_hex(&from_obj), oid_to_hex(&to_obj)); oid_to_hex(&from_obj), oid_to_hex(&to_obj));
} }

View File

@ -1809,7 +1809,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
cfg = init_copy_notes_for_rewrite("amend"); cfg = init_copy_notes_for_rewrite("amend");
if (cfg) { if (cfg) {
/* we are amending, so current_head is not NULL */ /* we are amending, so current_head is not NULL */
copy_note_for_rewrite(cfg, current_head->object.oid.hash, oid.hash); copy_note_for_rewrite(cfg, &current_head->object.oid, &oid);
finish_copy_notes_for_rewrite(cfg, "Notes added by 'git commit --amend'"); finish_copy_notes_for_rewrite(cfg, "Notes added by 'git commit --amend'");
} }
run_rewrite_hook(&current_head->object.oid, &oid); run_rewrite_hook(&current_head->object.oid, &oid);

View File

@ -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] = 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 child_process show = CHILD_PROCESS_INIT;
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;
struct strbuf cbuf = 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; show.git_cmd = 1;
if (start_command(&show)) if (start_command(&show))
die(_("unable to start 'show' for object '%s'"), die(_("unable to start 'show' for object '%s'"),
sha1_to_hex(object)); oid_to_hex(object));
if (strbuf_read(&buf, show.out, 0) < 0) if (strbuf_read(&buf, show.out, 0) < 0)
die_errno(_("could not read 'show' output")); 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)) if (finish_command(&show))
die(_("failed to finish 'show' for object '%s'"), 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) const unsigned char *old_note)
{ {
if (d->use_editor || !d->given) { 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; struct note_data *d = opt->value;
char *buf; char *buf;
unsigned char object[20]; struct object_id object;
enum object_type type; enum object_type type;
unsigned long len; unsigned long len;
if (d->buf.len) if (d->buf.len)
strbuf_addch(&d->buf, '\n'); 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); 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); free(buf);
die(_("failed to read object '%s'."), arg); 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) { 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; struct strbuf **split;
int err; 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); die(_("malformed input line: '%s'."), buf.buf);
strbuf_rtrim(split[0]); strbuf_rtrim(split[0]);
strbuf_rtrim(split[1]); 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); 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); die(_("failed to resolve '%s' as a valid ref."), split[1]->buf);
if (rewrite_cmd) if (rewrite_cmd)
err = copy_note_for_rewrite(c, from_obj, to_obj); err = copy_note_for_rewrite(c, &from_obj, &to_obj);
else else
err = copy_note(t, from_obj, to_obj, force, err = copy_note(t, from_obj.hash, to_obj.hash, force,
combine_notes_overwrite); combine_notes_overwrite);
if (err) { if (err) {
@ -350,7 +350,7 @@ static struct notes_tree *init_notes_check(const char *subcommand,
static int list(int argc, const char **argv, const char *prefix) static int list(int argc, const char **argv, const char *prefix)
{ {
struct notes_tree *t; struct notes_tree *t;
unsigned char object[20]; struct object_id object;
const struct object_id *note; const struct object_id *note;
int retval = -1; int retval = -1;
struct option options[] = { struct option options[] = {
@ -368,15 +368,15 @@ static int list(int argc, const char **argv, const char *prefix)
t = init_notes_check("list", 0); t = init_notes_check("list", 0);
if (argc) { 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]); die(_("failed to resolve '%s' as a valid ref."), argv[0]);
note = get_note(t, object); note = get_note(t, object.hash);
if (note) { if (note) {
puts(oid_to_hex(note)); puts(oid_to_hex(note));
retval = 0; retval = 0;
} else } else
retval = error(_("no note found for object %s."), retval = error(_("no note found for object %s."),
sha1_to_hex(object)); oid_to_hex(&object));
} else } else
retval = for_each_note(t, 0, list_each_note, NULL); retval = for_each_note(t, 0, list_each_note, NULL);
@ -391,7 +391,7 @@ static int add(int argc, const char **argv, const char *prefix)
int force = 0, allow_empty = 0; int force = 0, allow_empty = 0;
const char *object_ref; const char *object_ref;
struct notes_tree *t; struct notes_tree *t;
unsigned char object[20], new_note[20]; struct object_id object, new_note;
const struct object_id *note; const struct object_id *note;
struct note_data d = { 0, 0, NULL, STRBUF_INIT }; struct note_data d = { 0, 0, NULL, STRBUF_INIT };
struct option options[] = { struct option options[] = {
@ -423,11 +423,11 @@ static int add(int argc, const char **argv, const char *prefix)
object_ref = argc > 1 ? argv[1] : "HEAD"; 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); die(_("failed to resolve '%s' as a valid ref."), object_ref);
t = init_notes_check("add", NOTES_INIT_WRITABLE); t = init_notes_check("add", NOTES_INIT_WRITABLE);
note = get_note(t, object); note = get_note(t, object.hash);
if (note) { if (note) {
if (!force) { if (!force) {
@ -437,7 +437,7 @@ static int add(int argc, const char **argv, const char *prefix)
return error(_("Cannot add notes. " return error(_("Cannot add notes. "
"Found existing notes for object %s. " "Found existing notes for object %s. "
"Use '-f' to overwrite existing notes"), "Use '-f' to overwrite existing notes"),
sha1_to_hex(object)); oid_to_hex(&object));
} }
/* /*
* Redirect to "edit" subcommand. * Redirect to "edit" subcommand.
@ -450,19 +450,19 @@ static int add(int argc, const char **argv, const char *prefix)
return append_edit(argc, argv, prefix); return append_edit(argc, argv, prefix);
} }
fprintf(stderr, _("Overwriting existing notes for object %s\n"), fprintf(stderr, _("Overwriting existing notes for object %s\n"),
sha1_to_hex(object)); oid_to_hex(&object));
} }
prepare_note_data(object, &d, note->hash); prepare_note_data(&object, &d, note->hash);
if (d.buf.len || allow_empty) { if (d.buf.len || allow_empty) {
write_note_data(&d, new_note); write_note_data(&d, new_note.hash);
if (add_note(t, object, new_note, combine_notes_overwrite)) if (add_note(t, object.hash, new_note.hash, combine_notes_overwrite))
die("BUG: combine_notes_overwrite failed"); die("BUG: combine_notes_overwrite failed");
commit_notes(t, "Notes added by 'git notes add'"); commit_notes(t, "Notes added by 'git notes add'");
} else { } else {
fprintf(stderr, _("Removing note for object %s\n"), fprintf(stderr, _("Removing note for object %s\n"),
sha1_to_hex(object)); oid_to_hex(&object));
remove_note(t, object); remove_note(t, object.hash);
commit_notes(t, "Notes removed by 'git notes add'"); commit_notes(t, "Notes removed by 'git notes add'");
} }
@ -476,7 +476,7 @@ static int copy(int argc, const char **argv, const char *prefix)
int retval = 0, force = 0, from_stdin = 0; int retval = 0, force = 0, from_stdin = 0;
const struct object_id *from_note, *note; const struct object_id *from_note, *note;
const char *object_ref; const char *object_ref;
unsigned char object[20], from_obj[20]; struct object_id object, from_obj;
struct notes_tree *t; struct notes_tree *t;
const char *rewrite_cmd = NULL; const char *rewrite_cmd = NULL;
struct option options[] = { struct option options[] = {
@ -509,37 +509,37 @@ static int copy(int argc, const char **argv, const char *prefix)
usage_with_options(git_notes_copy_usage, options); 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]); die(_("failed to resolve '%s' as a valid ref."), argv[0]);
object_ref = 1 < argc ? argv[1] : "HEAD"; 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); die(_("failed to resolve '%s' as a valid ref."), object_ref);
t = init_notes_check("copy", NOTES_INIT_WRITABLE); t = init_notes_check("copy", NOTES_INIT_WRITABLE);
note = get_note(t, object); note = get_note(t, object.hash);
if (note) { if (note) {
if (!force) { if (!force) {
retval = error(_("Cannot copy notes. Found existing " retval = error(_("Cannot copy notes. Found existing "
"notes for object %s. Use '-f' to " "notes for object %s. Use '-f' to "
"overwrite existing notes"), "overwrite existing notes"),
sha1_to_hex(object)); oid_to_hex(&object));
goto out; goto out;
} }
fprintf(stderr, _("Overwriting existing notes for object %s\n"), 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.hash);
if (!from_note) { if (!from_note) {
retval = error(_("missing notes on source object %s. Cannot " retval = error(_("missing notes on source object %s. Cannot "
"copy."), sha1_to_hex(from_obj)); "copy."), oid_to_hex(&from_obj));
goto out; goto out;
} }
if (add_note(t, object, from_note->hash, combine_notes_overwrite)) if (add_note(t, object.hash, from_note->hash, combine_notes_overwrite))
die("BUG: combine_notes_overwrite failed"); die("BUG: combine_notes_overwrite failed");
commit_notes(t, "Notes added by 'git notes copy'"); commit_notes(t, "Notes added by 'git notes copy'");
out: out:
@ -552,7 +552,7 @@ static int append_edit(int argc, const char **argv, const char *prefix)
int allow_empty = 0; int allow_empty = 0;
const char *object_ref; const char *object_ref;
struct notes_tree *t; struct notes_tree *t;
unsigned char object[20], new_note[20]; struct object_id object, new_note;
const struct object_id *note; const struct object_id *note;
char *logmsg; char *logmsg;
const char * const *usage; const char * const *usage;
@ -592,13 +592,13 @@ static int append_edit(int argc, const char **argv, const char *prefix)
object_ref = 1 < argc ? argv[1] : "HEAD"; 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); die(_("failed to resolve '%s' as a valid ref."), object_ref);
t = init_notes_check(argv[0], NOTES_INIT_WRITABLE); t = init_notes_check(argv[0], NOTES_INIT_WRITABLE);
note = get_note(t, object); note = get_note(t, object.hash);
prepare_note_data(object, &d, edit && note ? note->hash : NULL); prepare_note_data(&object, &d, edit && note ? note->hash : NULL);
if (note && !edit) { if (note && !edit) {
/* Append buf to previous note contents */ /* Append buf to previous note contents */
@ -615,14 +615,14 @@ static int append_edit(int argc, const char **argv, const char *prefix)
} }
if (d.buf.len || allow_empty) { if (d.buf.len || allow_empty) {
write_note_data(&d, new_note); write_note_data(&d, new_note.hash);
if (add_note(t, object, new_note, combine_notes_overwrite)) if (add_note(t, object.hash, new_note.hash, combine_notes_overwrite))
die("BUG: combine_notes_overwrite failed"); die("BUG: combine_notes_overwrite failed");
logmsg = xstrfmt("Notes added by 'git notes %s'", argv[0]); logmsg = xstrfmt("Notes added by 'git notes %s'", argv[0]);
} else { } else {
fprintf(stderr, _("Removing note for object %s\n"), fprintf(stderr, _("Removing note for object %s\n"),
sha1_to_hex(object)); oid_to_hex(&object));
remove_note(t, object); remove_note(t, object.hash);
logmsg = xstrfmt("Notes removed by 'git notes %s'", argv[0]); logmsg = xstrfmt("Notes removed by 'git notes %s'", argv[0]);
} }
commit_notes(t, logmsg); commit_notes(t, logmsg);
@ -637,7 +637,7 @@ static int show(int argc, const char **argv, const char *prefix)
{ {
const char *object_ref; const char *object_ref;
struct notes_tree *t; struct notes_tree *t;
unsigned char object[20]; struct object_id object;
const struct object_id *note; const struct object_id *note;
int retval; int retval;
struct option options[] = { struct option options[] = {
@ -654,15 +654,15 @@ static int show(int argc, const char **argv, const char *prefix)
object_ref = argc ? argv[0] : "HEAD"; 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); die(_("failed to resolve '%s' as a valid ref."), object_ref);
t = init_notes_check("show", 0); t = init_notes_check("show", 0);
note = get_note(t, object); note = get_note(t, object.hash);
if (!note) if (!note)
retval = error(_("no note found for object %s."), retval = error(_("no note found for object %s."),
sha1_to_hex(object)); oid_to_hex(&object));
else { else {
const char *show_args[3] = {"show", oid_to_hex(note), NULL}; const char *show_args[3] = {"show", oid_to_hex(note), NULL};
retval = execv_git_cmd(show_args); retval = execv_git_cmd(show_args);
@ -760,7 +760,7 @@ static int git_config_get_notes_strategy(const char *key,
static int merge(int argc, const char **argv, const char *prefix) static int merge(int argc, const char **argv, const char *prefix)
{ {
struct strbuf remote_ref = STRBUF_INIT, msg = STRBUF_INIT; 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_tree *t;
struct notes_merge_options o; struct notes_merge_options o;
int do_merge = 0, do_commit = 0, do_abort = 0; int do_merge = 0, do_commit = 0, do_abort = 0;
@ -842,16 +842,16 @@ static int merge(int argc, const char **argv, const char *prefix)
remote_ref.buf, default_notes_ref()); remote_ref.buf, default_notes_ref());
strbuf_add(&(o.commit_msg), msg.buf + 7, msg.len - 7); /* skip "notes: " */ 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.hash);
if (result >= 0) /* Merge resulted (trivially) in result_sha1 */ if (result >= 0) /* Merge resulted (trivially) in result_sha1 */
/* Update default notes ref with new commit */ /* 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); 0, UPDATE_REFS_DIE_ON_ERR);
else { /* Merge has unresolved conflicts */ else { /* Merge has unresolved conflicts */
const struct worktree *wt; const struct worktree *wt;
/* Update .git/NOTES_MERGE_PARTIAL with partial merge result */ /* 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); 0, UPDATE_REFS_DIE_ON_ERR);
/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */ /* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref()); wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
@ -878,10 +878,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) static int remove_one_note(struct notes_tree *t, const char *name, unsigned flag)
{ {
int status; int status;
unsigned char sha1[20]; struct object_id oid;
if (get_sha1(name, sha1)) if (get_oid(name, &oid))
return error(_("Failed to resolve '%s' as a valid ref."), name); return error(_("Failed to resolve '%s' as a valid ref."), name);
status = remove_note(t, sha1); status = remove_note(t, oid.hash);
if (status) if (status)
fprintf(stderr, _("Object %s has no note\n"), name); fprintf(stderr, _("Object %s has no note\n"), name);
else else

View File

@ -155,12 +155,12 @@ struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd)
} }
int copy_note_for_rewrite(struct notes_rewrite_cfg *c, int copy_note_for_rewrite(struct notes_rewrite_cfg *c,
const unsigned char *from_obj, const unsigned char *to_obj) const struct object_id *from_obj, const struct object_id *to_obj)
{ {
int ret = 0; int ret = 0;
int i; int i;
for (i = 0; c->trees[i]; i++) for (i = 0; c->trees[i]; i++)
ret = copy_note(c->trees[i], from_obj, to_obj, 1, c->combine) || ret; ret = copy_note(c->trees[i], from_obj->hash, to_obj->hash, 1, c->combine) || ret;
return ret; return ret;
} }

View File

@ -40,7 +40,7 @@ struct notes_rewrite_cfg {
int parse_notes_merge_strategy(const char *v, enum notes_merge_strategy *s); int parse_notes_merge_strategy(const char *v, enum notes_merge_strategy *s);
struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd); struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd);
int copy_note_for_rewrite(struct notes_rewrite_cfg *c, int copy_note_for_rewrite(struct notes_rewrite_cfg *c,
const unsigned char *from_obj, const unsigned char *to_obj); const struct object_id *from_obj, const struct object_id *to_obj);
void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c, const char *msg); void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c, const char *msg);
#endif #endif