On 2023-10-24 at 20:12:52, Eric Sunshine wrote: > On Tue, Oct 24, 2023 at 3:58 PM brian m. carlson > <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > > git merge-file knows how to merge files on the file system already. It > > would be helpful, however, to allow it to also merge single blobs. > > Teach it an `--object-id` option which means that its arguments are > > object IDs and not files to allow it to do so. > > > > Since we obviously won't be writing the data to the first argument, > > either write to the object store and print the object ID, or honor the > > -p argument and print it to standard out. > > > > We handle the empty blob specially since read_mmblob doesn't read it > > directly, instead throwing an error, and otherwise users cannot specify > > an empty ancestor. > > > > Signed-off-by: brian m. carlson <bk2204@xxxxxxxxxx> > > --- > > diff --git a/builtin/merge-file.c b/builtin/merge-file.c > > @@ -99,20 +116,29 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) > > if (ret >= 0) { > > - const char *filename = argv[0]; > > - char *fpath = prefix_filename(prefix, argv[0]); > > - FILE *f = to_stdout ? stdout : fopen(fpath, "wb"); > > + if (object_id && !to_stdout) { > > + struct object_id oid; > > + if (result.size) > > + write_object_file(result.ptr, result.size, OBJ_BLOB, &oid); > > Should this be caring about errors by checking the return value of > write_object_file()? Probably so. I think I saw write_object_file_prepare returned void and misinterpreted that as write_object_file returning void. -- brian m. carlson (he/him or they/them) Toronto, Ontario, CA
Attachment:
signature.asc
Description: PGP signature