aboutsummaryrefslogtreecommitdiffstats
path: root/internal
diff options
context:
space:
mode:
authorDavid Symonds <dsymonds@golang.org>2020-07-15 13:52:04 +1000
committerDavid Symonds <dsymonds@golang.org>2020-07-16 12:53:37 +1000
commite28d9c90aad624596d20d1a59c8371d81b69190b (patch)
tree5785565db48069ff8f173b9dddcbb1b4c1f7e8ff /internal
parent41758ec4b81c557092d7566c3eed46f89c1ec3cc (diff)
downloadgo-git-e28d9c90aad624596d20d1a59c8371d81b69190b.tar.gz
Support partial hashes in Repository.ResolveRevision.
Like `git rev-parse <prefix>`, this enumerates the hashes of objects with the given prefix and adds them to the list of candidates for resolution. This has an exhaustive slow path, which requires enumerating all objects and filtering each one, but also a couple of fast paths for common cases. There's room for future work to make this faster; TODOs have been left for that. Fixes #135.
Diffstat (limited to 'internal')
-rw-r--r--internal/revision/parser.go2
-rw-r--r--internal/revision/parser_test.go1
2 files changed, 2 insertions, 1 deletions
diff --git a/internal/revision/parser.go b/internal/revision/parser.go
index 61de386..3efe5d7 100644
--- a/internal/revision/parser.go
+++ b/internal/revision/parser.go
@@ -28,7 +28,7 @@ func (e *ErrInvalidRevision) Error() string {
type Revisioner interface {
}
-// Ref represents a reference name : HEAD, master
+// Ref represents a reference name : HEAD, master, <hash>
type Ref string
// TildePath represents ~, ~{n}
diff --git a/internal/revision/parser_test.go b/internal/revision/parser_test.go
index 4bb007f..98403cc 100644
--- a/internal/revision/parser_test.go
+++ b/internal/revision/parser_test.go
@@ -354,6 +354,7 @@ func (s *ParserSuite) TestParseRefWithValidName(c *C) {
"refs/remotes/test",
"refs/remotes/origin/HEAD",
"refs/remotes/origin/master",
+ "0123abcd", // short hash
}
for _, d := range datas {