diff options
| author | Edward Thomson <ethomson@edwardthomson.com> | 2023-02-14 12:01:04 +0000 |
|---|---|---|
| committer | Edward Thomson <ethomson@edwardthomson.com> | 2023-02-14 12:01:04 +0000 |
| commit | 3b43c9d33597b11bc7fdf3bcfe3b21bfeff95e15 (patch) | |
| tree | 748b1a5e91f2e333e6f4b203308f8059f124da88 /src/libgit2 | |
| parent | 632fe77d118ef4062aee031261bad08afaf257cf (diff) | |
| parent | c1634611dde3feee874c0be545cbc1107caa2f29 (diff) | |
| download | libgit2-3b43c9d33597b11bc7fdf3bcfe3b21bfeff95e15.tar.gz | |
Merge branch 'revparse'
Diffstat (limited to 'src/libgit2')
| -rw-r--r-- | src/libgit2/revparse.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libgit2/revparse.c b/src/libgit2/revparse.c index 2ed282159..780f1a0cb 100644 --- a/src/libgit2/revparse.c +++ b/src/libgit2/revparse.c @@ -268,7 +268,16 @@ static int retrieve_revobject_from_reflog(git_object **out, git_reference **base int error = -1; if (*base_ref == NULL) { - if ((error = git_reference_dwim(&ref, repo, identifier)) < 0) + /* + * When HEAD@{n} is specified, do not use dwim, which would resolve the + * reference (to the current branch that HEAD is pointing to). + */ + if (position > 0 && strcmp(identifier, GIT_HEAD_FILE) == 0) + error = git_reference_lookup(&ref, repo, GIT_HEAD_FILE); + else + error = git_reference_dwim(&ref, repo, identifier); + + if (error < 0) return error; } else { ref = *base_ref; |
