Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 77a6176

Browse files
committed
Add TrackedRemoteName to BranchModel
1 parent 32e4df3 commit 77a6176

File tree

3 files changed

+54
-2
lines changed

3 files changed

+54
-2
lines changed

src/GitHub.Exports/Models/BranchModel.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ namespace GitHub.Models
77
public class BranchModel : ICopyable<BranchModel>,
88
IEquatable<BranchModel>, IComparable<BranchModel>
99
{
10-
public BranchModel(string name, RepositoryModel repo, string sha, bool isTracking, string trackedSha) :
10+
public BranchModel(string name, RepositoryModel repo, string sha, bool isTracking, string trackedSha, string trackedRemoteName) :
1111
this(name, repo)
1212
{
1313
IsTracking = isTracking;
1414
Sha = sha;
1515
TrackedSha = trackedSha;
16+
TrackedRemoteName = trackedRemoteName;
1617
}
1718

1819
public BranchModel(string name, RepositoryModel repo)
@@ -32,6 +33,7 @@ public BranchModel(string name, RepositoryModel repo)
3233
public string DisplayName { get; set; }
3334
public string Sha { get; private set; }
3435
public string TrackedSha { get; private set; }
36+
public string TrackedRemoteName { get; private set; }
3537

3638
#region Equality things
3739
public void CopyFrom(BranchModel other)

src/GitHub.Exports/Services/GitService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public BranchModel GetBranch(LocalRepositoryModel model)
8080
repo: model,
8181
sha: branch.Tip?.Sha,
8282
isTracking: branch.IsTracking,
83-
trackedSha: branch.TrackedBranch?.Tip?.Sha);
83+
trackedSha: branch.TrackedBranch?.Tip?.Sha,
84+
trackedRemoteName: branch.TrackedBranch?.RemoteName);
8485
}
8586
}
8687

test/GitHub.Exports.UnitTests/GitServiceIntegrationTests.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,55 @@ public void NoRepository_Same_As_Repository_With_No_CloneUrl()
7272
}
7373
}
7474

75+
public class TheGetBranchMethod
76+
{
77+
[Test]
78+
public void Master_Branch()
79+
{
80+
using (var temp = new TempRepository())
81+
{
82+
var signature = new Signature("Me", "[email protected]", DateTimeOffset.Now);
83+
temp.Repository.Commit("First", signature, signature);
84+
var expectSha = temp.Repository.Head.Tip.Sha;
85+
var path = temp.Directory.FullName;
86+
var target = new GitService(new RepositoryFacade());
87+
88+
var localRepository = target.CreateLocalRepositoryModel(path);
89+
var branch = target.GetBranch(localRepository);
90+
91+
Assert.That(branch.Name, Is.EqualTo("master"));
92+
Assert.That(branch.DisplayName, Is.EqualTo("master"));
93+
Assert.That(branch.Id, Is.EqualTo("/master")); // We don't know owner
94+
Assert.That(branch.IsTracking, Is.EqualTo(false));
95+
Assert.That(branch.TrackedSha, Is.EqualTo(null));
96+
Assert.That(branch.Sha, Is.EqualTo(expectSha));
97+
}
98+
}
99+
100+
[Test]
101+
public void Branch_With_Remote()
102+
{
103+
using (var temp = new TempRepository())
104+
{
105+
var repository = temp.Repository;
106+
var owner = "owner";
107+
var remoteName = "remoteName";
108+
var remote = repository.Network.Remotes.Add(remoteName, $"https://github.com/{owner}/VisualStudio");
109+
var localBranch = repository.Head;
110+
repository.Branches.Update(temp.Repository.Head,
111+
b => b.Remote = remote.Name,
112+
b => b.UpstreamBranch = localBranch.CanonicalName);
113+
var path = temp.Directory.FullName;
114+
var target = new GitService(new RepositoryFacade());
115+
var localRepository = target.CreateLocalRepositoryModel(path);
116+
117+
var branch = target.GetBranch(localRepository);
118+
119+
Assert.That(branch.TrackedRemoteName, Is.EqualTo(remoteName));
120+
}
121+
}
122+
}
123+
75124
public class TheGetLatestPushedShaMethod : TestBaseClass
76125
{
77126
[Test]

0 commit comments

Comments
 (0)