git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/1] merge-file: add an option to process object IDs

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Oct 24, 2023, 20:12 UTC
Message-ID
<CAPig+cT_yq-ke4RTpTdTTLsnJFxCtyGAP2K0mQ_S23jJYtUp=w@mail.gmail.com>
In-Reply-To
<20231024195655.2413191-2-sandals@crustytoothpaste.net>

On Tue, Oct 24, 2023 at 3:58 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:

Show 25 quoted lines
> 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@github.com>
> ---
> 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()?

Show 13 quoted lines
> +               } else {
> +                       const char *filename = argv[0];
> +                       char *fpath = prefix_filename(prefix, argv[0]);
> +                       FILE *f = to_stdout ? stdout : fopen(fpath, "wb");
> +                       if (!f)
> +                               ret = error_errno("Could not open %s for writing",
> +                                                 filename);
> +                       else if (result.size &&
> +                                fwrite(result.ptr, result.size, 1, f) != 1)
> +                               ret = error_errno("Could not write to %s", filename);
> +                       else if (fclose(f))
> +                               ret = error_errno("Could not close %s", filename);
> +                       free(fpath);
 The non-"object-id" case cares about errors.
Previous: brian m. carlsonNext: brian m. carlson
Message 3 of 34 in “Object ID support for git merge-file”
  1. 0/1 Object ID support for git merge-filebrian m. carlson, Oct 24, 2023
  2. 1/1 merge-file: add an option to process object IDsbrian m. carlson, Oct 24, 2023
  3. Eric SunshineOct 24, 2023
  4. brian m. carlsonOct 24, 2023
  5. Elijah NewrenOct 29, 2023
  6. Phillip WoodOct 29, 2023
  7. brian m. carlsonOct 30, 2023
  8. brian m. carlsonOct 29, 2023
  9. Elijah NewrenOct 30, 2023
  10. Elijah NewrenOct 29, 2023
  11. Phillip WoodOct 29, 2023
  12. Taylor BlauOct 30, 2023
  13. brian m. carlsonOct 30, 2023
  14. Elijah NewrenOct 30, 2023
  15. 0/1 Object ID support for git merge-filebrian m. carlson, Oct 30, 2023
  16. 1/1 merge-file: add an option to process object IDsbrian m. carlson, Oct 30, 2023
  17. Martin ÅgrenOct 31, 2023
  18. brian m. carlsonOct 31, 2023
  19. Junio C HamanoNov 1, 2023
  20. brian m. carlsonNov 1, 2023
  21. Elijah NewrenOct 30, 2023
  22. Junio C HamanoOct 31, 2023
  23. Phillip WoodOct 31, 2023
  24. Junio C HamanoOct 31, 2023
  25. 0/2 Object ID support for git merge-filebrian m. carlson, Nov 1, 2023
  26. 1/2 git-merge-file doc: drop "-file" from argument placeholdersbrian m. carlson, Nov 1, 2023
  27. Junio C HamanoNov 1, 2023
  28. Martin ÅgrenNov 2, 2023
  29. brian m. carlsonNov 2, 2023
  30. Martin ÅgrenNov 2, 2023
  31. Junio C HamanoNov 2, 2023
  32. 2/2 merge-file: add an option to process object IDsbrian m. carlson, Nov 1, 2023
  33. Martin ÅgrenNov 2, 2023
  34. Junio C HamanoNov 1, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.