Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2sharp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2011-04-16 01:44:17 +0400
committernulltoken <emeric.fermas@gmail.com>2011-04-16 01:44:17 +0400
commit8650b07a14d0fc2b7021181068d67535742971a5 (patch)
treee20b1e55eb6653ae6286ca4252863a1bc86dd851 /LibGit2Sharp/TagCollection.cs
parent52dbcc40b1f392237292b6775a86ab9842a70c8f (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.cs22
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