8000 Refactor handling of reference prefixes · freevoid/libgit2sharp@9593179 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9593179

Browse files
Saamannulltoken
authored andcommitted
Refactor handling of reference prefixes
1 parent 718a99e commit 9593179

8 files changed

+43
-29
lines changed

LibGit2Sharp/Branch.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ private Branch ResolveTrackedBranch()
264264

265265
private static bool IsRemoteBranch(string canonicalName)
266266
{
267-
return canonicalName.StartsWith("refs/remotes/", StringComparison.Ordinal);
267+
return canonicalName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal);
268268
}
269269

270270
/// <summary>
@@ -274,14 +274,14 @@ private static bool IsRemoteBranch(string canonicalName)
274274
/// <returns>The friendly shortened name</returns>
275275
protected override string Shorten()
276276
{
277-
if (CanonicalName.StartsWith("refs/heads/", StringComparison.Ordinal))
277+
if (CanonicalName.StartsWith(Reference.LocalBranchPrefix, StringComparison.Ordinal))
278278
{
279-
return CanonicalName.Substring("refs/heads/".Length);
279+
return CanonicalName.Substring(Reference.LocalBranchPrefix.Length);
280280
}
281281

282-
if (CanonicalName.StartsWith("refs/remotes/", StringComparison.Ordinal))
282+
if (CanonicalName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal))
283283
{
284-
return CanonicalName.Substring("refs/remotes/".Length);
284+
return CanonicalName.Substring(Reference.RemoteTrackingBranchPrefix.Length);
285285
}
286286

287287
throw new ArgumentException(

LibGit2Sharp/BranchCollection.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ public virtual Branch this[string name]
6464

6565
private static string ShortToLocalName(string name)
6666
{
67-
return string.Format(CultureInfo.InvariantCulture, "{0}{1}", "refs/heads/", name);
67+
return string.Format(CultureInfo.InvariantCulture, "{0}{1}", Reference.LocalBranchPrefix, name);
6868
}
6969

7070
private static string ShortToRemoteName(string name)
7171
{
72-
return string.Format(CultureInfo.InvariantCulture, "{0}{1}", "refs/remotes/", name);
72+
return string.Format(CultureInfo.InvariantCulture, "{0}{1}", Reference.RemoteTrackingBranchPrefix, name);
7373
}
7474

7575
private static string ShortToRefName(string name)
@@ -157,7 +157,7 @@ public virtual Branch Move(Branch branch, string newName, bool allowOverwrite =
157157
"Cannot rename branch '{0}'. It's a remote tracking branch.", branch.Name));
158158
}
159159

160-
using (ReferenceSafeHandle referencePtr = repo.Refs.RetrieveReferencePtr("refs/heads/" + branch.Name))
160+
using (ReferenceSafeHandle referencePtr = repo.Refs.RetrieveReferencePtr(Reference.LocalBranchPrefix + branch.Name))
161161
{
162162
using (ReferenceSafeHandle ref_out = Proxy.git_branch_move(referencePtr, newName, allowOverwrite))
163163
{
@@ -188,8 +188,8 @@ public virtual Branch Update(Branch branch, params Action<BranchUpdater>[] actio
188188
private static bool LooksLikeABranchName(string referenceName)
189189
{
190190
return referenceName == "HEAD" ||
191-
referenceName.StartsWith("refs/heads/", StringComparison.Ordinal) ||
192-
referenceName.StartsWith("refs/remotes/", StringComparison.Ordinal);
191+
referenceName.StartsWith(Reference.LocalBranchPrefix, StringComparison.Ordinal) ||
192+
referenceName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal);
193193
}
194194

195195
private static string branchToCanoncialName(IntPtr namePtr, GitBranchType branchType)

LibGit2Sharp/BranchCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public static void Remove(this BranchCollection branches, string name, bool isRe
3535
{
3636
Ensure.ArgumentNotNullOrEmptyString(name, "name");
3737

38-
string branchName = isRemote ? "refs/remotes/" + name : name;
38+
string branchName = isRemote ? Reference.RemoteTrackingBranchPrefix + name : name;
3939

4040
Branch branch = branches[branchName];
4141

LibGit2Sharp/BranchUpdater.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,12 @@ private void GetUpstreamInformation(string canonicalName, out string remoteName,
222222
remoteName = null;
223223
mergeBranchName = null;
224224

225-
const string localPrefix = "refs/heads/";
226-
const string remotePrefix = "refs/remotes/";
227-
228-
if (canonicalName.StartsWith(localPrefix, StringComparison.Ordinal))
225+
if (canonicalName.StartsWith(Reference.LocalBranchPrefix, StringComparison.Ordinal))
229226
{
230227
remoteName = ".";
231228
mergeBranchName = canonicalName;
232229
}
233-
else if (canonicalName.StartsWith(remotePrefix, StringComparison.Ordinal))
230+
else if (canonicalName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal))
234231
{
235232
remoteName = Proxy.git_branch_remote_name(repo.Handle, canonicalName);
236233

LibGit2Sharp/NoteCollection.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ public class NoteCollection : IEnumerable<Note>
1919
private readonly Repository repo;
2020
private readonly Lazy<string> defaultNamespace;
2121

22-
private const string refsNotesPrefix = "refs/notes/";
23-
2422
/// <summary>
2523
/// Needed for mocking purposes.
2624
/// </summary>
@@ -81,7 +79,7 @@ internal IEnumerable<string> NamespaceRefs
8179
return new[] { NormalizeToCanonicalName(DefaultNamespace) }.Concat(
8280
from reference in repo.Refs
8381
select reference.CanonicalName into refCanonical
84-
where refCanonical.StartsWith(refsNotesPrefix, StringComparison.Ordinal) && refCanonical != NormalizeToCanonicalName(DefaultNamespace)
82+
where refCanonical.StartsWith(Reference.NotePrefix, StringComparison.Ordinal) && refCanonical != NormalizeToCanonicalName(DefaultNamespace)
8583
select refCanonical);
8684
}
8785
}
@@ -138,24 +136,24 @@ internal static string NormalizeToCanonicalName(string name)
138136
{
139137
Ensure.ArgumentNotNullOrEmptyString(name, "name");
140138

141-
if (name.StartsWith(refsNotesPrefix, StringComparison.Ordinal))
139+
if (name.StartsWith(Reference.NotePrefix, StringComparison.Ordinal))
142140
{
143141
return name;
144142
}
145143

146-
return string.Concat(refsNotesPrefix, name);
144+
return string.Concat(Reference.NotePrefix, name);
147145
}
148146

149147
internal string UnCanonicalizeName(string name)
150148
{
151149
Ensure.ArgumentNotNullOrEmptyString(name, "name");
152150

153-
if (!name.StartsWith(refsNotesPrefix, StringComparison.Ordinal))
151+
if (!name.StartsWith(Reference.NotePrefix, StringComparison.Ordinal))
154152
{
155153
return name;
156154
}
157155

158-
return name.Substring(refsNotesPrefix.Length);
156+
return name.Substring(Reference.NotePrefix.Length);
159157
}
160158

161159
/// <summary>

LibGit2Sharp/Reference.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,26 @@ public override string ToString()
160160
return CanonicalName;
161161
}
162162

163+
internal static string LocalBranchPrefix
164+
{
165+
get { return "refs/heads/"; }
166+
}
167+
168+
internal static string RemoteTrackingBranchPrefix
169+
{
170+
get { return "refs/remotes/"; }
171+
}
172+
173+
internal static string TagPrefix
174+
{
175+
get { return "refs/tags/"; }
176+
}
177+
178+
internal static string NotePrefix
179+
{
180+
get { return "refs/notes/"; }
181+
}
182+
163183
private string DebuggerDisplay
164184
{
165185
get

LibGit2Sharp/Tag.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public virtual bool IsAnnotated
5555
/// <returns>The friendly shortened name</returns>
5656
protected override string Shorten()
5757
{
58-
return CanonicalName.Substring("refs/tags/".Length);
58+
return CanonicalName.Substring(Reference.TagPrefix.Length);
5959
}
6060
}
6161
}

LibGit2Sharp/TagCollection.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ namespace LibGit2Sharp
1515
public class TagCollection : IEnumerable<Tag>
1616
{
1717
internal readonly Repository repo;
18-
private const string refsTagsPrefix = "refs/tags/";
1918

2019
/// <summary>
2120
/// Needed for mocking purposes.
@@ -126,24 +125,24 @@ private static string NormalizeToCanonicalName(string name)
126125
{
127126
Ensure.ArgumentNotNullOrEmptyString(name, "name");
128127

129-
if (name.StartsWith(refsTagsPrefix, StringComparison.Ordinal))
128+
if (name.StartsWith(Reference.TagPrefix, StringComparison.Ordinal))
130129
{
131130
return name;
132131
}
133132

134-
return string.Concat(refsTagsPrefix, name);
133+
return string.Concat(Reference.TagPrefix, name);
135134
}
136135

137136
internal static string UnCanonicalizeName(string name)
138137
{
139138
Ensure.ArgumentNotNullOrEmptyString(name, "name");
140139

141-
if (!name.StartsWith(refsTagsPrefix, StringComparison.Ordinal))
140+
if (!name.StartsWith(Reference.TagPrefix, StringComparison.Ordinal))
142141
{
143142
return name;
144143
}
145144

146-
return name.Substring(refsTagsPrefix.Length);
145+
return name.Substring(Reference.TagPrefix.Length);
147146
}
148147

149148
private string DebuggerDisplay

0 commit comments

Comments
 (0)
0