diff options
author | nulltoken <emeric.fermas@gmail.com> | 2011-04-16 01:44:17 +0400 |
---|---|---|
committer | nulltoken <emeric.fermas@gmail.com> | 2011-04-16 01:44:17 +0400 |
commit | 8650b07a14d0fc2b7021181068d67535742971a5 (patch) | |
tree | e20b1e55eb6653ae6286ca4252863a1bc86dd851 /LibGit2Sharp/TagCollection.cs | |
parent | 52dbcc40b1f392237292b6775a86ab9842a70c8f (diff) |
Replace retrieval of the list of tags by a call to native libgit2 function
Diffstat (limited to 'LibGit2Sharp/TagCollection.cs')
-rw-r--r-- | LibGit2Sharp/TagCollection.cs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/LibGit2Sharp/TagCollection.cs b/LibGit2Sharp/TagCollection.cs index 38a34335..bdf03a2b 100644 --- a/LibGit2Sharp/TagCollection.cs +++ b/LibGit2Sharp/TagCollection.cs @@ -29,7 +29,7 @@ namespace LibGit2Sharp { get { - var reference = repo.Refs[FullReferenceNameFrom(name)]; + var reference = repo.Refs[NormalizeToCanonicalName(name)]; return Tag.BuildFromReference(reference); } } @@ -38,8 +38,7 @@ namespace LibGit2Sharp public IEnumerator<Tag> GetEnumerator() { - var list = repo.Refs.Where(IsATag).Select(Tag.BuildFromReference); - return list.GetEnumerator(); + return Libgit2UnsafeHelper.ListAllTags(this, repo.Handle).GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() @@ -86,7 +85,7 @@ namespace LibGit2Sharp GitObject objectToTag = RetrieveObjectToTag(target); - Reference tagRef = repo.Refs.Create(FullReferenceNameFrom(name), objectToTag.Id); //TODO: To be replaced by native libgit2 tag_create_lightweight() when available. + Reference tagRef = repo.Refs.Create(NormalizeToCanonicalName(name), objectToTag.Id); //TODO: To be replaced by native libgit2 tag_create_lightweight() when available. return Tag.BuildFromReference(tagRef); } @@ -109,15 +108,16 @@ namespace LibGit2Sharp if (name.Contains("/")) throw new ArgumentException("Tag name cannot contain the character '/'."); } - private static string FullReferenceNameFrom(string name) + private static string NormalizeToCanonicalName(string name) { - EnsureTagName(name); - return string.Format("refs/tags/{0}", name); - } + Ensure.ArgumentNotNullOrEmptyString(name, "name"); - private static bool IsATag(Reference reference) - { - return reference.Name.StartsWith("refs/tags/"); + if (name.StartsWith("refs/tags/", StringComparison.Ordinal)) + { + return name; + } + + return string.Format("refs/tags/{0}", name); } } }
\ No newline at end of file |