diff --git a/GitVersionCore.Tests/Fixtures/RemoteRepositoryFixture.cs b/GitVersionCore.Tests/Fixtures/RemoteRepositoryFixture.cs index 9ddf86d965..fa91302696 100644 --- a/GitVersionCore.Tests/Fixtures/RemoteRepositoryFixture.cs +++ b/GitVersionCore.Tests/Fixtures/RemoteRepositoryFixture.cs @@ -8,6 +8,12 @@ public class RemoteRepositoryFixture : RepositoryFixtureBase public string LocalRepositoryPath; public IRepository LocalRepository; + public RemoteRepositoryFixture(Func builder, Config configuration) + : base(builder, configuration) + { + CloneRepository(); + } + public RemoteRepositoryFixture(Config configuration) : base(CreateNewRepository, configuration) { diff --git a/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs b/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs index 7474180011..487eff3f77 100644 --- a/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs +++ b/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs @@ -16,6 +16,33 @@ public void GivenARemoteGitRepositoryWithCommits_ThenClonedLocalShouldMatchRemot } } + [Test] + public void GivenARemoteGitRepositoryWithCommitsAndBranches_ThenClonedLocalShouldMatchRemoteVersion() + { + using (var fixture = new RemoteRepositoryFixture( + path => + { + Repository.Init(path); + Console.WriteLine("Created git repository at '{0}'", path); + + var repo = new Repository(path); + repo.MakeCommits(5); + + repo.CreateBranch("develop"); + repo.CreateBranch("release-1.0"); + + repo.Checkout("release-1.0"); + repo.MakeCommits(5); + + return repo; + }, + new Config())) + { + fixture.AssertFullSemver("1.0.0-beta.1+5"); + fixture.AssertFullSemver("1.0.0-beta.1+5", fixture.LocalRepository); + } + } + [Test] public void GivenARemoteGitRepositoryAheadOfLocalRepository_ThenChangesShouldPull() { diff --git a/GitVersionCore/LibGitExtensions.cs b/GitVersionCore/LibGitExtensions.cs index 12b6175153..5a7c987d85 100644 --- a/GitVersionCore/LibGitExtensions.cs +++ b/GitVersionCore/LibGitExtensions.cs @@ -56,7 +56,7 @@ public static IEnumerable GetBranchesContainingCommit(this Commit commit yield break; } - foreach (var branch in repository.Branches) + foreach (var branch in repository.Branches.Where(b => (onlyTrackedBranches && !b.IsTracking))) { var commits = repository.Commits.QueryBy(new CommitFilter { Since = branch }).Where(c => c.Sha == commit.Sha);