diff --git a/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs b/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs index 7474180011..84ee8088c9 100644 --- a/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs +++ b/GitVersionCore.Tests/IntegrationTests/RemoteRepositoryScenarios.cs @@ -54,4 +54,42 @@ public void GivenARemoteGitRepositoryWhenCheckingOutDetachedhead_UsingTrackingBr fixture.AssertFullSemver("0.1.0+4", fixture.LocalRepository); } } + + [Test] + public void WhenLocalReleaseBranchPushedToTrackedMetaShouldNotChange() + { + var config = new Config() + { + VersioningMode = VersioningMode.ContinuousDeployment + }; + + using (var fixture = new RemoteRepositoryFixture(config)) + { + const string TaggedVersion = "2.0"; + fixture.Repository.MakeATaggedCommit(TaggedVersion); + var remoteBranch = fixture.Repository.CreateBranch("release-3.0"); + fixture.LocalRepository.Network.Fetch(fixture.LocalRepository.Network.Remotes["origin"]); + var localBranch = fixture.LocalRepository.CreateBranch("release-3.0", remoteBranch.Tip); + + fixture.LocalRepository.Branches.Update(localBranch, b => + { + b.TrackedBranch = remoteBranch.CanonicalName; + }); + + var trackingBranch = fixture.LocalRepository.Branches["release-3.0"]; + fixture.LocalRepository.Checkout(trackingBranch); + fixture.LocalRepository.MakeCommits(4); + + + + // Check version before push to remote. + fixture.AssertFullSemver("3.0.0-beta.4", fixture.LocalRepository); + + //TODO: This is not supported in LibGit2Sharp + //fixture.LocalRepository.Network.Push(fixture.LocalRepository.Network.Remotes["origin"], @"refs/heads/release-3.0"); + + // Check version after push to remote + //fixture.AssertFullSemver("3.0.0-beta.4", fixture.LocalRepository); + } + } } \ No newline at end of file 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);