8000 Add helper methods to determine reference kind from canonical name · philhack/libgit2sharp@af00576 · GitHub
[go: up one dir, main page]

Skip to content

Commit af00576

Browse files
Saamannulltoken
authored andcommitted
Add helper methods to determine reference kind from canonical name
1 parent 9593179 commit af00576

7 files changed

+47
-11
lines changed

LibGit2Sharp/Branch.cs

Lines changed: 3 additions & 3 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(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal);
267+
return canonicalName.LooksLikeRemoteTrackingBranch();
268268
}
269269

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

282-
if (CanonicalName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal))
282+
if (CanonicalName.LooksLikeRemoteTrackingBranch())
283283
{
284284
return CanonicalName.Substring(Reference.RemoteTrackingBranchPrefix.Length);
285285
}

LibGit2Sharp/BranchCollection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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(Reference.LocalBranchPrefix, StringComparison.Ordinal) ||
192-
referenceName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal);
191+
referenceName.LooksLikeLocalBranch() ||
192+
referenceName.LooksLikeRemoteTrackingBranch();
193193
}
194194

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

LibGit2Sharp/BranchUpdater.cs

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

225-
if (canonicalName.StartsWith(Reference.LocalBranchPrefix, StringComparison.Ordinal))
225+
if (canonicalName.LooksLikeLocalBranch())
226226
{
227227
remoteName = ".";
228228
mergeBranchName = canonicalName;
229229
}
230-
else if (canonicalName.StartsWith(Reference.RemoteTrackingBranchPrefix, StringComparison.Ordinal))
230+
else if (canonicalName.LooksLikeRemoteTrackingBranch())
231231
{
232232
remoteName = Proxy.git_branch_remote_name(repo.Handle, canonicalName);
233233

LibGit2Sharp/LibGit2Sharp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
<Compile Include="Changes.cs" />
6868
<Compile Include="CheckoutCallbacks.cs" />
6969
<Compile Include="CheckoutOptions.cs" />
70+
<Compile Include="ReferenceExtensions.cs" />
7071
<Compile Include="Conflict.cs" />
7172
<Compile Include="ConflictCollection.cs" />
7273
<Compile Include="RemoveFromIndexException.cs" />

LibGit2Sharp/NoteCollection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ internal static string NormalizeToCanonicalName(string name)
136136
{
137137
Ensure.ArgumentNotNullOrEmptyString(name, "name");
138138

139-
if (name.StartsWith(Reference.NotePrefix, StringComparison.Ordinal))
139+
if (name.LooksLikeNote())
140140
{
141141
return name;
142142
}
@@ -148,7 +148,7 @@ internal string UnCanonicalizeName(string name)
148148
{
149149
Ensure.ArgumentNotNullOrEmptyString(name, "name");
150150

151-
if (!name.StartsWith(Reference.NotePrefix, StringComparison.Ordinal))
151+
if (!name.LooksLikeNote())
152152
{
153153
return name;
154154
}

LibGit2Sharp/ReferenceExtensions.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
3+
namespace LibGit2Sharp
4+
{
5+
/// <summary>
6+
/// Provides helpers to a <see cref = "Reference" />.
7+
/// </summary>
8+
public static class ReferenceExtensions
9+
{
10+
internal static bool LooksLikeLocalBranch(this string canonicalName)
11+
{
12+
return canonicalName.IsPrefixedBy(Reference.LocalBranchPrefix);
13+
}
14+
15+
internal static bool LooksLikeRemoteTrackingBranch(this string canonicalName)
16+
{
17+
return canonicalName.IsPrefixedBy(Reference.RemoteTrackingBranchPrefix);
18+
}
19+
20+
internal static bool LooksLikeTag(this string canonicalName)
21+
{
22+
return canonicalName.IsPrefixedBy(Reference.TagPrefix);
23+
}
24+
25+
internal static bool LooksLikeNote(this string canonicalName)
26+
{
27+
return canonicalName.IsPrefixedBy(Reference.NotePrefix);
28+
}
29+
30+
private static bool IsPrefixedBy(this string input, string prefix)
31+
{
32+
return input.StartsWith(prefix, StringComparison.Ordinal);
33+
}
34+
}
35+
}

LibGit2Sharp/TagCollection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private static string NormalizeToCanonicalName(string name)
125125
{
126126
Ensure.ArgumentNotNullOrEmptyString(name, "name");
127127

128-
if (name.StartsWith(Reference.TagPrefix, StringComparison.Ordinal))
128+
if (name.LooksLikeTag())
129129
{
130130
return name;
131131
}
@@ -137,7 +137,7 @@ internal static string UnCanonicalizeName(string name)
137137
{
138138
Ensure.ArgumentNotNullOrEmptyString(name, "name");
139139

140-
if (!name.StartsWith(Reference.TagPrefix, StringComparison.Ordinal))
140+
if (!name.LooksLikeTag())
141141
{
142142
return name;
143143
}

0 commit comments

Comments
 (0)
0