use of jetbrains.buildServer.buildTriggers.vcs.git.GitVersion in project teamcity-git by JetBrains.
the class GitAgentVersionHealthReport method report.
@Override
public void report(@NotNull final HealthStatusScope scope, @NotNull final HealthStatusItemConsumer consumer) {
final List<BuildAgentEx> unsupported = new ArrayList<>();
final List<BuildAgentEx> deprecated = new ArrayList<>();
for (BuildAgentEx a : myAgentManager.getRegisteredAgents()) {
final GitVersion version = getGitVersion(a);
if (version == null) {
LOG.debug("No git executable version reported for \"" + a.getName() + "\" agent via \"" + Constants.TEAMCITY_AGENT_GIT_VERSION + "\" environment property");
continue;
}
if (version.isLessThan(GitVersion.MIN)) {
unsupported.add(a);
} else if (version.isLessThan(myDeprecatedVersion)) {
deprecated.add(a);
}
}
if (!unsupported.isEmpty()) {
final Map<String, Object> model = new HashMap<>();
model.put("gitVersionUnsupported", true);
model.put("gitVersionAgentCount", unsupported.size());
model.put("gitVersionAgents", groupAgents(unsupported));
model.put("hasSeveralPools", myAgentPoolManager.hasSeveralPools());
consumer.consumeGlobal(new HealthStatusItem(UNSUPPORTED_CATEGORY, myUnsupportedCategory, model));
}
if (!deprecated.isEmpty()) {
final Map<String, Object> model = new HashMap<>();
model.put("gitVersionUnsupported", false);
model.put("gitVersionAgentCount", deprecated.size());
model.put("gitVersionAgents", groupAgents(deprecated));
model.put("hasSeveralPools", myAgentPoolManager.hasSeveralPools());
consumer.consumeGlobal(new HealthStatusItem(DEPRECATED_CATEGORY, myDeprecatedCategory, model));
}
}
use of jetbrains.buildServer.buildTriggers.vcs.git.GitVersion in project teamcity-git by JetBrains.
the class AutoCheckoutTest method git_version_does_not_support_sparse_checkout.
public void git_version_does_not_support_sparse_checkout() throws IOException, VcsException {
GitVersion gitVersion = GIT_WITH_SPARSE_CHECKOUT.previousVersion();
myVcsSupport = vcsSupportWithFakeGitOfVersion(gitVersion);
VcsRoot vcsRoot = vcsRootWithAgentGitPath(getGitPath());
AgentRunningBuild build = runningBuild().sharedConfigParams(PluginConfigImpl.USE_SPARSE_CHECKOUT, "true").addRootEntry(vcsRoot, "-:dir/q.txt").build();
AgentCheckoutAbility canCheckout = myVcsSupport.canCheckout(vcsRoot, new CheckoutRules("-:dir/q.txt"), build);
then(canCheckout.getCanNotCheckoutReason().getType()).isEqualTo(AgentCanNotCheckoutReason.NOT_SUPPORTED_CHECKOUT_RULES);
then(canCheckout.getCanNotCheckoutReason().getDetails()).contains("Cannot perform sparse checkout using git " + gitVersion);
}
use of jetbrains.buildServer.buildTriggers.vcs.git.GitVersion in project teamcity-git by JetBrains.
the class AutoCheckoutTest method git_version_does_not_support_sparse_checkout_default_rules.
public void git_version_does_not_support_sparse_checkout_default_rules() throws IOException, VcsException {
GitVersion gitVersion = GIT_WITH_SPARSE_CHECKOUT.previousVersion();
myVcsSupport = vcsSupportWithFakeGitOfVersion(gitVersion);
VcsRoot vcsRoot = vcsRootWithAgentGitPath(gitVersion.toString());
AgentRunningBuild build = runningBuild().sharedConfigParams(PluginConfigImpl.USE_SPARSE_CHECKOUT, "true").addRoot(vcsRoot).build();
AgentCheckoutAbility canCheckout = myVcsSupport.canCheckout(vcsRoot, CheckoutRules.DEFAULT, build);
then(canCheckout.getCanNotCheckoutReason()).isNull();
}
use of jetbrains.buildServer.buildTriggers.vcs.git.GitVersion in project teamcity-git by JetBrains.
the class FetchCommandImplTest method negative_refspec_for_tags.
@Test
public void negative_refspec_for_tags() throws Exception {
final String gitPath = getGitPath();
final GitVersion version = new AgentGitFacadeImpl(gitPath).version().call();
if (!GitVersion.negativeRefSpecSupported(version))
throw new SkipException("Git version is too old to run this test");
final File remote = GitTestUtil.dataFile("fetch_multiple_refspecs");
new File(remote, "refs" + File.separator + "heads").mkdirs();
final File work = createTempDir();
runCommand(false, gitPath, work, "init", "--bare");
final StringBuilder log = new StringBuilder();
final StubContext context = new StubContext("git", version);
context.setLogger(createLogger(log));
final GitCommandLine cmd = new GitCommandLine(context, getFakeGen());
cmd.setExePath(gitPath);
cmd.setWorkingDirectory(work);
final FetchCommandImpl fetch = new FetchCommandImpl(cmd);
fetch.setRemote(remote.getAbsolutePath());
fetch.setAuthSettings(getEmptyAuthSettings());
fetch.setRefspec("+refs/*:refs/*");
fetch.setRefspec("^refs/tags/*");
fetch.setFetchTags(false);
fetch.call();
// master + 6000 branches
assertEquals(6001, FileUtil.listFiles(new File(work, "refs/heads"), (d, n) -> true).length);
assertFalse(new File(work, "refs/tags/my_tag").exists());
final String logStr = log.toString();
assertFalse(logStr.contains("my_tag"));
}
use of jetbrains.buildServer.buildTriggers.vcs.git.GitVersion in project teamcity-git by JetBrains.
the class FetchCommandImplTest method fetch_multiple_refspecs.
@Test
public void fetch_multiple_refspecs() throws Exception {
final String gitPath = getGitPath();
final GitVersion version = new AgentGitFacadeImpl(gitPath).version().call();
if (!GitVersion.fetchSupportsStdin(version))
throw new SkipException("Git version is too old to run this test");
final File remote = GitTestUtil.dataFile("fetch_multiple_refspecs");
new File(remote, "refs" + File.separator + "heads").mkdirs();
final File work = createTempDir();
runCommand(false, gitPath, work, "init");
final GitCommandLine cmd = new GitCommandLine(new StubContext("git", version), getFakeGen());
cmd.setExePath(gitPath);
cmd.setWorkingDirectory(work);
final FetchCommandImpl fetch = new FetchCommandImpl(cmd);
fetch.setRemote(remote.getAbsolutePath());
fetch.setAuthSettings(getEmptyAuthSettings());
for (int i = 0; i < 6000; ++i) {
fetch.setRefspec("+refs/heads/branch" + i + ":refs/remotes/origin/branch" + i);
}
fetch.call();
assertEquals(6000, FileUtil.listFiles(new File(work, ".git/refs/remotes/origin"), (d, n) -> true).length);
}
Aggregations