libgit2 / objective-git

Objective-C bindings to libgit2
MIT License
1.16k stars 280 forks source link

Could not get tags with `allTagsWithError` #684

Open Whirlwind opened 5 years ago

Whirlwind commented 5 years ago

I have a git repo, and there are some tags in the repo. I use the - [GTRepository allTagsWithError:] could not get any tags.

I debug the code, I found that :


static int GTRepositoryForeachTagCallback(const char *name, git_oid *oid, void *payload) {
    struct GTRepositoryTagEnumerationInfo *info = payload;
    GTTag *tag = (GTTag *)[info->myself lookUpObjectByGitOid:oid objectType:GTObjectTypeTag error:NULL];

    BOOL stop = NO;
    if (tag != nil) {
        info->block(tag, &stop);
    }

    return stop ? GIT_EUSER : 0;
}

The lookUpObjectByGitOid: will return nil.

And debug into it, I found the odb_read_1 in libgit2 will find a oid with type GIT_OBJ_COMMIT, it do not match the GIT_OBJ_TAG, so the type is mismatch.