Merge branch 'jk/peel-iterated-oid'
The peel_ref() API has been replaced with peel_iterated_oid(). * jk/peel-iterated-oid: refs: switch peel_ref() to peel_iterated_oid()
This commit is contained in:
commit
973e20b83f
@ -194,7 +194,7 @@ static int get_name(const char *path, const struct object_id *oid, int flag, voi
|
||||
}
|
||||
|
||||
/* Is it annotated? */
|
||||
if (!peel_ref(path, &peeled)) {
|
||||
if (!peel_iterated_oid(oid, &peeled)) {
|
||||
is_annotated = !oideq(oid, &peeled);
|
||||
} else {
|
||||
oidcpy(&peeled, oid);
|
||||
|
@ -769,7 +769,7 @@ static int dfs_on_ref(const char *refname,
|
||||
struct commit_list *stack = NULL;
|
||||
struct commit *commit;
|
||||
|
||||
if (!peel_ref(refname, &peeled))
|
||||
if (!peel_iterated_oid(oid, &peeled))
|
||||
oid = &peeled;
|
||||
if (oid_object_info(the_repository, oid, NULL) != OBJ_COMMIT)
|
||||
return 0;
|
||||
|
@ -634,7 +634,7 @@ static int mark_tagged(const char *path, const struct object_id *oid, int flag,
|
||||
|
||||
if (entry)
|
||||
entry->tagged = 1;
|
||||
if (!peel_ref(path, &peeled)) {
|
||||
if (!peel_iterated_oid(oid, &peeled)) {
|
||||
entry = packlist_find(&to_pack, &peeled);
|
||||
if (entry)
|
||||
entry->tagged = 1;
|
||||
@ -2819,7 +2819,7 @@ static int add_ref_tag(const char *path, const struct object_id *oid, int flag,
|
||||
struct object_id peeled;
|
||||
|
||||
if (starts_with(path, "refs/tags/") && /* is a tag? */
|
||||
!peel_ref(path, &peeled) && /* peelable? */
|
||||
!peel_iterated_oid(oid, &peeled) && /* peelable? */
|
||||
obj_is_packed(&peeled)) /* object packed? */
|
||||
add_tag_chain(oid);
|
||||
return 0;
|
||||
|
@ -40,7 +40,7 @@ static void show_one(const char *refname, const struct object_id *oid)
|
||||
if (!deref_tags)
|
||||
return;
|
||||
|
||||
if (!peel_ref(refname, &peeled)) {
|
||||
if (!peel_iterated_oid(oid, &peeled)) {
|
||||
hex = find_unique_abbrev(&peeled, abbrev);
|
||||
printf("%s %s^{}\n", hex, refname);
|
||||
}
|
||||
|
@ -1458,7 +1458,7 @@ static int add_ref_to_set(const char *refname,
|
||||
struct object_id peeled;
|
||||
struct refs_cb_data *data = (struct refs_cb_data *)cb_data;
|
||||
|
||||
if (!peel_ref(refname, &peeled))
|
||||
if (!peel_iterated_oid(oid, &peeled))
|
||||
oid = &peeled;
|
||||
if (oid_object_info(the_repository, oid, NULL) == OBJ_COMMIT)
|
||||
oidset_insert(data->commits, oid);
|
||||
|
@ -63,7 +63,7 @@ static int send_ref(const char *refname, const struct object_id *oid,
|
||||
|
||||
if (data->peel) {
|
||||
struct object_id peeled;
|
||||
if (!peel_ref(refname, &peeled))
|
||||
if (!peel_iterated_oid(oid, &peeled))
|
||||
strbuf_addf(&refline, " peeled:%s", oid_to_hex(&peeled));
|
||||
}
|
||||
|
||||
|
29
refs.c
29
refs.c
@ -1916,31 +1916,14 @@ int refs_pack_refs(struct ref_store *refs, unsigned int flags)
|
||||
return refs->be->pack_refs(refs, flags);
|
||||
}
|
||||
|
||||
int refs_peel_ref(struct ref_store *refs, const char *refname,
|
||||
struct object_id *oid)
|
||||
int peel_iterated_oid(const struct object_id *base, struct object_id *peeled)
|
||||
{
|
||||
int flag;
|
||||
struct object_id base;
|
||||
if (current_ref_iter &&
|
||||
(current_ref_iter->oid == base ||
|
||||
oideq(current_ref_iter->oid, base)))
|
||||
return ref_iterator_peel(current_ref_iter, peeled);
|
||||
|
||||
if (current_ref_iter && current_ref_iter->refname == refname) {
|
||||
struct object_id peeled;
|
||||
|
||||
if (ref_iterator_peel(current_ref_iter, &peeled))
|
||||
return -1;
|
||||
oidcpy(oid, &peeled);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (refs_read_ref_full(refs, refname,
|
||||
RESOLVE_REF_READING, &base, &flag))
|
||||
return -1;
|
||||
|
||||
return peel_object(&base, oid);
|
||||
}
|
||||
|
||||
int peel_ref(const char *refname, struct object_id *oid)
|
||||
{
|
||||
return refs_peel_ref(get_main_ref_store(the_repository), refname, oid);
|
||||
return peel_object(base, peeled);
|
||||
}
|
||||
|
||||
int refs_create_symref(struct ref_store *refs,
|
||||
|
18
refs.h
18
refs.h
@ -118,16 +118,16 @@ int is_branch(const char *refname);
|
||||
int refs_init_db(struct strbuf *err);
|
||||
|
||||
/*
|
||||
* If refname is a non-symbolic reference that refers to a tag object,
|
||||
* and the tag can be (recursively) dereferenced to a non-tag object,
|
||||
* store the object ID of the referred-to object to oid and return 0.
|
||||
* If any of these conditions are not met, return a non-zero value.
|
||||
* Symbolic references are considered unpeelable, even if they
|
||||
* ultimately resolve to a peelable tag.
|
||||
* Return the peeled value of the oid currently being iterated via
|
||||
* for_each_ref(), etc. This is equivalent to calling:
|
||||
*
|
||||
* peel_object(oid, &peeled);
|
||||
*
|
||||
* with the "oid" value given to the each_ref_fn callback, except
|
||||
* that some ref storage may be able to answer the query without
|
||||
* actually loading the object in memory.
|
||||
*/
|
||||
int refs_peel_ref(struct ref_store *refs, const char *refname,
|
||||
struct object_id *oid);
|
||||
int peel_ref(const char *refname, struct object_id *oid);
|
||||
int peel_iterated_oid(const struct object_id *base, struct object_id *peeled);
|
||||
|
||||
/**
|
||||
* Resolve refname in the nested "gitlink" repository in the specified
|
||||
|
@ -72,18 +72,6 @@ static int cmd_pack_refs(struct ref_store *refs, const char **argv)
|
||||
return refs_pack_refs(refs, flags);
|
||||
}
|
||||
|
||||
static int cmd_peel_ref(struct ref_store *refs, const char **argv)
|
||||
{
|
||||
const char *refname = notnull(*argv++, "refname");
|
||||
struct object_id oid;
|
||||
int ret;
|
||||
|
||||
ret = refs_peel_ref(refs, refname, &oid);
|
||||
if (!ret)
|
||||
puts(oid_to_hex(&oid));
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cmd_create_symref(struct ref_store *refs, const char **argv)
|
||||
{
|
||||
const char *refname = notnull(*argv++, "refname");
|
||||
@ -255,7 +243,6 @@ struct command {
|
||||
|
||||
static struct command commands[] = {
|
||||
{ "pack-refs", cmd_pack_refs },
|
||||
{ "peel-ref", cmd_peel_ref },
|
||||
{ "create-symref", cmd_create_symref },
|
||||
{ "delete-refs", cmd_delete_refs },
|
||||
{ "rename-ref", cmd_rename_ref },
|
||||
|
@ -17,13 +17,6 @@ test_expect_success 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)' '
|
||||
N=`find .git/refs -type f | wc -l`
|
||||
'
|
||||
|
||||
test_expect_success 'peel_ref(new-tag)' '
|
||||
git rev-parse HEAD >expected &&
|
||||
git tag -a -m new-tag new-tag HEAD &&
|
||||
$RUN peel-ref refs/tags/new-tag >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'create_symref(FOO, refs/heads/main)' '
|
||||
$RUN create-symref FOO refs/heads/main nothing &&
|
||||
echo refs/heads/main >expected &&
|
||||
@ -32,6 +25,7 @@ test_expect_success 'create_symref(FOO, refs/heads/main)' '
|
||||
'
|
||||
|
||||
test_expect_success 'delete_refs(FOO, refs/tags/new-tag)' '
|
||||
git tag -a -m new-tag new-tag HEAD &&
|
||||
git rev-parse FOO -- &&
|
||||
git rev-parse refs/tags/new-tag -- &&
|
||||
m=$(git rev-parse main) &&
|
||||
|
@ -14,7 +14,8 @@ test_expect_success 'setup' '
|
||||
(
|
||||
cd sub &&
|
||||
test_commit first &&
|
||||
git checkout -b new-main
|
||||
git checkout -b new-main &&
|
||||
git tag -a -m new-tag new-tag HEAD
|
||||
)
|
||||
'
|
||||
|
||||
@ -22,13 +23,6 @@ test_expect_success 'pack_refs() not allowed' '
|
||||
test_must_fail $RUN pack-refs 3
|
||||
'
|
||||
|
||||
test_expect_success 'peel_ref(new-tag)' '
|
||||
git -C sub rev-parse HEAD >expected &&
|
||||
git -C sub tag -a -m new-tag new-tag HEAD &&
|
||||
$RUN peel-ref refs/tags/new-tag >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'create_symref() not allowed' '
|
||||
test_must_fail $RUN create-symref FOO refs/heads/main nothing
|
||||
'
|
||||
|
@ -1232,7 +1232,7 @@ static int send_ref(const char *refname, const struct object_id *oid,
|
||||
packet_write_fmt(1, "%s %s\n", oid_to_hex(oid), refname_nons);
|
||||
}
|
||||
capabilities = NULL;
|
||||
if (!peel_ref(refname, &peeled))
|
||||
if (!peel_iterated_oid(oid, &peeled))
|
||||
packet_write_fmt(1, "%s %s^{}\n", oid_to_hex(&peeled), refname_nons);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user