diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-03-28 14:13:50 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-03-28 14:13:50 -0700 |
commit | 1002f28a527d33893f7dab068dbac7011f84af65 (patch) | |
tree | 9b9ada23d952e936d496597d03064c10d8d9f73d /builtin/cat-file.c | |
parent | c75fd8d8150afdf836b63a8e0534d9b9e3e111ba (diff) | |
parent | 7673ecd2dcdcf0aae01cccdb5c25f9b96160a8c0 (diff) | |
download | git-1002f28a527d33893f7dab068dbac7011f84af65.tar.gz |
Merge branch 'eb/hash-transition'
Work to support a repository that work with both SHA-1 and SHA-256
hash algorithms has started.
* eb/hash-transition: (30 commits)
t1016-compatObjectFormat: add tests to verify the conversion between objects
t1006: test oid compatibility with cat-file
t1006: rename sha1 to oid
test-lib: compute the compatibility hash so tests may use it
builtin/ls-tree: let the oid determine the output algorithm
object-file: handle compat objects in check_object_signature
tree-walk: init_tree_desc take an oid to get the hash algorithm
builtin/cat-file: let the oid determine the output algorithm
rev-parse: add an --output-object-format parameter
repository: implement extensions.compatObjectFormat
object-file: update object_info_extended to reencode objects
object-file-convert: convert commits that embed signed tags
object-file-convert: convert commit objects when writing
object-file-convert: don't leak when converting tag objects
object-file-convert: convert tag objects when writing
object-file-convert: add a function to convert trees between algorithms
object: factor out parse_mode out of fast-import and tree-walk into in object.h
cache: add a function to read an OID of a specific algorithm
tag: sign both hashes
commit: export add_header_signature to support handling signatures on tags
...
Diffstat (limited to 'builtin/cat-file.c')
-rw-r--r-- | builtin/cat-file.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/builtin/cat-file.c b/builtin/cat-file.c index bbf851138e..3f5ce7d34c 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -106,7 +106,10 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, struct object_info oi = OBJECT_INFO_INIT; struct strbuf sb = STRBUF_INIT; unsigned flags = OBJECT_INFO_LOOKUP_REPLACE; - unsigned get_oid_flags = GET_OID_RECORD_PATH | GET_OID_ONLY_TO_DIE; + unsigned get_oid_flags = + GET_OID_RECORD_PATH | + GET_OID_ONLY_TO_DIE | + GET_OID_HASH_ANY; const char *path = force_path; const int opt_cw = (opt == 'c' || opt == 'w'); if (!path && opt_cw) @@ -226,7 +229,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, die(_("unable to read %s"), oid_to_hex(&oid)); if (!skip_prefix(buffer, "object ", &target) || - get_oid_hex(target, &blob_oid)) + get_oid_hex_algop(target, &blob_oid, + &hash_algos[oid.algo])) die("%s not a valid tag", oid_to_hex(&oid)); free(buffer); } else @@ -517,7 +521,9 @@ static void batch_one_object(const char *obj_name, struct expand_data *data) { struct object_context ctx; - int flags = opt->follow_symlinks ? GET_OID_FOLLOW_SYMLINKS : 0; + int flags = + GET_OID_HASH_ANY | + (opt->follow_symlinks ? GET_OID_FOLLOW_SYMLINKS : 0); enum get_oid_result result; result = get_oid_with_context(the_repository, obj_name, |