本文整理汇总了C#中GitVersion.GitVersionContext类的典型用法代码示例。如果您正苦于以下问题:C# GitVersionContext类的具体用法?C# GitVersionContext怎么用?C# GitVersionContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
GitVersionContext类属于GitVersion命名空间,在下文中一共展示了GitVersionContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
public VersionPoint Execute(GitVersionContext context, DateTimeOffset olderThan)
{
var masterBranch = context.Repository.FindBranch("master");
foreach (var commit in masterBranch.CommitsPriorToThan(olderThan))
{
foreach (var tag in context.Repository.TagsByDate(commit))
{
SemanticVersion semanticVersion;
if (SemanticVersion.TryParse(tag.Name, context.Configuration.TagPrefix, out semanticVersion))
{
return new VersionPoint
{
Major = semanticVersion.Major,
Minor = semanticVersion.Minor,
};
}
}
SemanticVersion semanticVersionFromMergeMessage;
if (MergeMessageParser.TryParse(commit, context.Configuration, out semanticVersionFromMergeMessage))
{
return new VersionPoint
{
Major = semanticVersionFromMergeMessage.Major,
Minor = semanticVersionFromMergeMessage.Minor,
};
}
}
return new VersionPoint
{
Major = 0,
Minor = 1,
};
}
示例2: FindVersion
public bool FindVersion(GitVersionContext context, out SemanticVersion semanticVersion)
{
var versionString = GetUnknownBranchSuffix(context.CurrentBranch);
if (!versionString.Contains("."))
{
semanticVersion = null;
return false;
}
var shortVersion = SemanticVersion.Parse(versionString, context.Configuration.TagPrefix);
var applicableTagsInDescendingOrder = context.Repository.SemVerTagsRelatedToVersion(context.Configuration, shortVersion).OrderByDescending(tag => SemanticVersion.Parse(tag.Name, context.Configuration.TagPrefix)).ToList();
var nbHotfixCommits = BranchCommitDifferenceFinder.NumberOfCommitsSinceLastTagOrBranchPoint(context, applicableTagsInDescendingOrder, BranchType.Unknown, "master");
var semanticVersionPreReleaseTag = RecentTagVersionExtractor.RetrieveMostRecentOptionalTagVersion(context, applicableTagsInDescendingOrder) ?? CreateDefaultPreReleaseTag(context, versionString);
if (semanticVersionPreReleaseTag.Name == "release")
{
semanticVersionPreReleaseTag.Name = context.Configuration.ReleaseBranchTag;
}
semanticVersion = new SemanticVersion
{
Major = shortVersion.Major,
Minor = shortVersion.Minor,
Patch = shortVersion.Patch,
PreReleaseTag = semanticVersionPreReleaseTag,
BuildMetaData = new SemanticVersionBuildMetaData(nbHotfixCommits, context.CurrentBranch.Name, context.CurrentCommit.Sha, context.CurrentCommit.When())
};
return true;
}
示例3: FindVersion
public SemanticVersion FindVersion(GitVersionContext context)
{
var versionOnMasterFinder = new VersionOnMasterFinder();
var tip = context.CurrentCommit;
var versionFromMaster = versionOnMasterFinder.Execute(context, tip.When());
var f = new CommitFilter
{
Since = tip,
Until = context.Repository.FindBranch("master").Tip,
SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time
};
var c = context.Repository.Commits.QueryBy(f);
var numberOfCommitsSinceRelease = c.Count();
var semanticVersion = new SemanticVersion
{
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor + 1,
Patch = 0,
PreReleaseTag = context.Configuration.DevelopBranchTag + numberOfCommitsSinceRelease,
BuildMetaData = new SemanticVersionBuildMetaData(numberOfCommitsSinceRelease, context.CurrentBranch.Name,tip.Sha,tip.When()),
};
semanticVersion.OverrideVersionManuallyIfNeeded(context.Repository, context.Configuration);
return semanticVersion;
}
示例4: GetVersion
public static Tuple<CachedVersion, GitVersionContext> GetVersion(string gitDirectory, Config configuration)
{
using (var repo = RepositoryLoader.GetRepo(gitDirectory))
{
var versionFinder = new GitVersionFinder();
var context = new GitVersionContext(repo, configuration);
var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory);
var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks);
Tuple<CachedVersion, GitVersionContext> result;
if (versionCacheVersions.TryGetValue(key, out result))
{
if (result.Item1.Timestamp != ticks)
{
Logger.WriteInfo("Change detected. flushing cache.");
result.Item1.SemanticVersion = versionFinder.FindVersion(context);
}
return result;
}
Logger.WriteInfo("Version not in cache. Calculating version.");
return versionCacheVersions[key] = Tuple.Create(new CachedVersion
{
SemanticVersion = versionFinder.FindVersion(context),
Timestamp = ticks
}, context);
}
}
示例5: GetVersion
public static CachedVersion GetVersion(string gitDirectory, Config configuration)
{
using (var repo = RepositoryLoader.GetRepo(gitDirectory))
{
var versionFinder = new GitVersionFinder();
var context = new GitVersionContext(repo, configuration);
var ticks = DirectoryDateFinder.GetLastDirectoryWrite(gitDirectory);
var key = string.Format("{0}:{1}:{2}", repo.Head.CanonicalName, repo.Head.Tip.Sha, ticks);
CachedVersion cachedVersion;
if (versionCacheVersions.TryGetValue(key, out cachedVersion))
{
if (cachedVersion.Timestamp != ticks)
{
Logger.WriteInfo("Change detected. flushing cache.");
cachedVersion.SemanticVersion = versionFinder.FindVersion(context);
cachedVersion.MasterReleaseDate = LastMinorVersionFinder.Execute(repo, new Config(), repo.Head.Tip);
}
return cachedVersion;
}
Logger.WriteInfo("Version not in cache. Calculating version.");
return versionCacheVersions[key] = new CachedVersion
{
SemanticVersion = versionFinder.FindVersion(context),
MasterReleaseDate = LastMinorVersionFinder.Execute(repo, new Config(), repo.Head.Tip),
Timestamp = ticks
};
}
}
示例6: UsesBranchSpecificConfigOverTopLevelDefaults
public void UsesBranchSpecificConfigOverTopLevelDefaults()
{
var config = new Config
{
VersioningMode = VersioningMode.ContinuousDelivery,
Branches =
{
{
"dev(elop)?(ment)?$", new BranchConfig
{
VersioningMode = VersioningMode.ContinuousDeployment,
Tag = "alpha"
}
}
}
};
ConfigurationProvider.ApplyDefaultsTo(config);
var develop = new MockBranch("develop") { new MockCommit { CommitterEx = Constants.SignatureNow() } };
var mockRepository = new MockRepository
{
Branches = new MockBranchCollection
{
new MockBranch("master") { new MockCommit { CommitterEx = Constants.SignatureNow() } },
develop
}
};
var context = new GitVersionContext(mockRepository, develop, config);
context.Configuration.Tag.ShouldBe("alpha");
}
示例7: ExtractIssueNumber
// TODO refactor to remove duplication
string ExtractIssueNumber(GitVersionContext context)
{
const string prefix = "/pull/";
var pullRequestBranch = context.CurrentBranch;
var start = pullRequestBranch.CanonicalName.IndexOf(prefix, StringComparison.Ordinal);
var end = pullRequestBranch.CanonicalName.LastIndexOf("/merge", pullRequestBranch.CanonicalName.Length - 1,
StringComparison.Ordinal);
string issueNumber = null;
if (start != -1 && end != -1 && start + prefix.Length <= end)
{
start += prefix.Length;
issueNumber = pullRequestBranch.CanonicalName.Substring(start, end - start);
}
if (!LooksLikeAValidPullRequestNumber(issueNumber))
{
var message = string.Format("Unable to extract pull request number from '{0}'.", pullRequestBranch.CanonicalName);
throw new WarningException(message);
}
return issueNumber;
}
示例8: DetermineIncrementedField
public static VersionField? DetermineIncrementedField(GitVersionContext context, BaseVersion baseVersion)
{
var commitMessageIncrement = FindCommitMessageIncrement(context, baseVersion);
var defaultIncrement = context.Configuration.Increment.ToVersionField();
// use the default branch config increment strategy if there are no commit message overrides
if (commitMessageIncrement == null)
{
return baseVersion.ShouldIncrement ? defaultIncrement : (VersionField?)null;
}
// cap the commit message severity to minor for alpha versions
if (baseVersion.SemanticVersion < new SemanticVersion(1) && commitMessageIncrement > VersionField.Minor)
{
commitMessageIncrement = VersionField.Minor;
}
// don't increment for less than the branch config increment, if the absence of commit messages would have
// still resulted in an increment of configuration.Increment
if (baseVersion.ShouldIncrement && commitMessageIncrement < defaultIncrement)
{
return defaultIncrement;
}
return commitMessageIncrement;
}
示例9: FindVersion
public SemanticVersion FindVersion(GitVersionContext context)
{
var versionOnMasterFinder = new VersionOnMasterFinder();
var tip = context.CurrentBranch.Tip;
var versionFromMaster = versionOnMasterFinder.Execute(context, tip.When());
var f = new CommitFilter
{
Since = tip,
Until = context.Repository.FindBranch("master").Tip,
SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Time
};
var c = context.Repository.Commits.QueryBy(f);
var numberOfCommitsSinceRelease = c.Count();
var releaseDate = ReleaseDateFinder.Execute(context.Repository, tip.Sha, 0);
var semanticVersion = new SemanticVersion
{
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor + 1,
Patch = 0,
PreReleaseTag = "unstable" + numberOfCommitsSinceRelease,
BuildMetaData = new SemanticVersionBuildMetaData(numberOfCommitsSinceRelease, context.CurrentBranch.Name, releaseDate),
};
return semanticVersion;
}
示例10: GetBranchConfiguration
/// <summary>
/// Gets the <see cref="BranchConfig"/> for the current commit.
/// </summary>
public static BranchConfig GetBranchConfiguration(GitVersionContext context, Branch targetBranch, IList<Branch> excludedInheritBranches = null)
{
var matchingBranches = LookupBranchConfiguration(context.FullConfiguration, targetBranch).ToArray();
BranchConfig branchConfiguration;
if (matchingBranches.Length > 0)
{
branchConfiguration = matchingBranches[0];
if (matchingBranches.Length > 1)
{
Logger.WriteWarning(string.Format(
"Multiple branch configurations match the current branch branchName of '{0}'. Using the first matching configuration, '{1}'. Matching configurations include: '{2}'",
targetBranch.FriendlyName,
branchConfiguration.Name,
string.Join("', '", matchingBranches.Select(b => b.Name))));
}
}
else
{
Logger.WriteInfo(string.Format(
"No branch configuration found for branch {0}, falling back to default configuration",
targetBranch.FriendlyName));
branchConfiguration = new BranchConfig { Name = string.Empty };
ConfigurationProvider.ApplyBranchDefaults(context.FullConfiguration, branchConfiguration, "");
}
return branchConfiguration.Increment == IncrementStrategy.Inherit ?
InheritBranchConfiguration(context, targetBranch, branchConfiguration, excludedInheritBranches) :
branchConfiguration;
}
示例11: FindVersion
protected SemanticVersion FindVersion(
GitVersionContext context,
BranchType branchType)
{
var ancestor = FindCommonAncestorWithDevelop(context.Repository, context.CurrentBranch, branchType);
if (!IsThereAnyCommitOnTheBranch(context.Repository, context.CurrentBranch))
{
var developVersionFinder = new DevelopVersionFinder();
return developVersionFinder.FindVersion(context);
}
var versionOnMasterFinder = new VersionOnMasterFinder();
var versionFromMaster = versionOnMasterFinder.Execute(context, context.CurrentBranch.Tip.Committer.When);
var numberOfCommitsOnBranchSinceCommit = NumberOfCommitsOnBranchSinceCommit(context, ancestor);
var sha = context.CurrentBranch.Tip.Sha;
var releaseDate = ReleaseDateFinder.Execute(context.Repository, sha, 0);
var semanticVersion = new SemanticVersion
{
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor + 1,
Patch = 0,
PreReleaseTag = "unstable0",
BuildMetaData = new SemanticVersionBuildMetaData(
numberOfCommitsOnBranchSinceCommit,
context.CurrentBranch.Name, releaseDate)
};
return semanticVersion;
}
示例12: GetSemanticVersion
static SemanticVersion GetSemanticVersion(Repository repository)
{
var versionForRepositoryFinder = new GitVersionFinder();
var gitVersionContext = new GitVersionContext(repository);
Logger.WriteInfo("Running against branch: " + gitVersionContext.CurrentBranch.Name);
return versionForRepositoryFinder.FindVersion(gitVersionContext);
}
示例13: FindCommitMessageIncrement
private static VersionField? FindCommitMessageIncrement(GitVersionContext context, BaseVersion baseVersion)
{
if (context.Configuration.CommitMessageIncrementing == CommitMessageIncrementMode.Disabled)
{
return null;
}
var commits = GetIntermediateCommits(context.Repository, baseVersion.BaseVersionSource, context.CurrentCommit);
if (context.Configuration.CommitMessageIncrementing == CommitMessageIncrementMode.MergeMessageOnly)
{
commits = commits.Where(c => c.Parents.Count() > 1);
}
var majorRegex = CreateRegex(context.Configuration.MajorVersionBumpMessage ?? DefaultMajorPattern);
var minorRegex = CreateRegex(context.Configuration.MinorVersionBumpMessage ?? DefaultMinorPattern);
var patchRegex = CreateRegex(context.Configuration.PatchVersionBumpMessage ?? DefaultPatchPattern);
var increments = commits
.Select(c => FindIncrementFromMessage(c.Message, majorRegex, minorRegex, patchRegex))
.Where(v => v != null)
.Select(v => v.Value)
.ToList();
if (increments.Any())
{
return increments.Max();
}
return null;
}
示例14: FindVersion
protected SemanticVersion FindVersion(
GitVersionContext context,
BranchType branchType)
{
var ancestor = FindCommonAncestorWithDevelop(context.Repository, context.CurrentBranch, branchType);
if (!IsThereAnyCommitOnTheBranch(context.Repository, context.CurrentBranch))
{
var developVersionFinder = new DevelopVersionFinder();
return developVersionFinder.FindVersion(context);
}
var versionOnMasterFinder = new VersionOnMasterFinder();
var versionFromMaster = versionOnMasterFinder.Execute(context, context.CurrentCommit.When());
var numberOfCommitsOnBranchSinceCommit = NumberOfCommitsOnBranchSinceCommit(context, ancestor);
var preReleaseTag = context.CurrentBranch.Name
.TrimStart(branchType.ToString() + '-')
.TrimStart(branchType.ToString() + '/');
var semanticVersion = new SemanticVersion
{
Major = versionFromMaster.Major,
Minor = versionFromMaster.Minor + 1,
Patch = 0,
PreReleaseTag = preReleaseTag,
BuildMetaData = new SemanticVersionBuildMetaData(
numberOfCommitsOnBranchSinceCommit,
context.CurrentBranch.Name, context.CurrentCommit.Sha, context.CurrentCommit.When())
};
semanticVersion.OverrideVersionManuallyIfNeeded(context.Repository, context.Configuration);
return semanticVersion;
}
示例15: ExecuteGitVersion
public static VersionVariables ExecuteGitVersion(IFileSystem fileSystem, string targetUrl, string dynamicRepositoryLocation, Authentication authentication, string targetBranch, bool noFetch, string workingDirectory, string commitId)
{
// Normalise if we are running on build server
var gitPreparer = new GitPreparer(targetUrl, dynamicRepositoryLocation, authentication, noFetch, workingDirectory);
var applicableBuildServers = BuildServerList.GetApplicableBuildServers();
var buildServer = applicableBuildServers.FirstOrDefault();
var currentBranch = buildServer == null ? null : buildServer.GetCurrentBranch();
if (!string.IsNullOrEmpty(currentBranch))
{
Logger.WriteInfo("Branch from build environment: " + currentBranch);
}
gitPreparer.Initialise(buildServer != null, currentBranch ?? targetBranch);
var dotGitDirectory = gitPreparer.GetDotGitDirectory();
var projectRoot = gitPreparer.GetProjectRootDirectory();
Logger.WriteInfo(string.Format("Project root is: " + projectRoot));
if (string.IsNullOrEmpty(dotGitDirectory) || string.IsNullOrEmpty(projectRoot))
{
// TODO Link to wiki article
throw new Exception(string.Format("Failed to prepare or find the .git directory in path '{0}'.", workingDirectory));
}
VersionVariables variables;
var versionFinder = new GitVersionFinder();
var configuration = ConfigurationProvider.Provide(projectRoot, fileSystem);
using (var repo = RepositoryLoader.GetRepo(dotGitDirectory))
{
var gitVersionContext = new GitVersionContext(repo, configuration, commitId: commitId);
var semanticVersion = versionFinder.FindVersion(gitVersionContext);
var config = gitVersionContext.Configuration;
variables = VariableProvider.GetVariablesFor(semanticVersion, config.AssemblyVersioningScheme, config.VersioningMode, config.ContinuousDeploymentFallbackTag, gitVersionContext.IsCurrentCommitTagged);
}
return variables;
}