use of jetbrains.buildServer.buildTriggers.vcs.git.command.GitExec in project teamcity-git by JetBrains.
the class GitServerVersionHealthPage method isAvailable.
@Override
public boolean isAvailable(@NotNull HttpServletRequest request) {
if (!super.isAvailable(request))
return false;
if (!SessionUser.getUser(request).isPermissionGrantedGlobally(Permission.MANAGE_SERVER_INSTALLATION))
return false;
if (!myGitOperations.isNativeGitOperationsEnabled())
return false;
final HealthStatusItem item = getStatusItem(request);
final Object gitExec = item.getAdditionalData().get("gitExec");
return gitExec == null || gitExec instanceof GitExec && ((GitExec) gitExec).getVersion().equals(getCurrentGitVersion());
}
use of jetbrains.buildServer.buildTriggers.vcs.git.command.GitExec in project teamcity-git by JetBrains.
the class AutoCheckoutTest method should_respect_root_settings_when_checking_multi_root_constraints2.
@TestFor(issues = "TW-49786")
public void should_respect_root_settings_when_checking_multi_root_constraints2() throws Exception {
VcsRoot root1 = vcsRoot().withId(1).withFetchUrl("http://some.org/repo1.git").build();
VcsRoot root2 = vcsRoot().withId(2).withFetchUrl("http://some.org/repo2.git").build();
AgentRunningBuild build = runningBuild().addRootEntry(root1, "+:dir1").addRootEntry(root2, "+:dir2").build();
// both roots require sparse checkout and mapped into the same directory, but the second
// root uses git version which doesn't support sparse checkout; we shouldn't take it into
// account during canCheckout() check for the first root
GitDetector detector = new GitDetector() {
@NotNull
public GitExec getGitPathAndVersion(@NotNull VcsRoot root, @NotNull BuildAgentConfiguration config, @NotNull AgentRunningBuild build) throws VcsException {
if (root.equals(root1)) {
return new GitExec("git1", GIT_WITH_SPARSE_CHECKOUT);
}
if (root.equals(root2)) {
return new GitExec("git2", GIT_WITH_SPARSE_CHECKOUT.previousVersion());
}
throw new VcsException("Unexpected VCS root");
}
@NotNull
@Override
public GitExec getGitPathAndVersion(@NotNull AgentRunningBuild build) throws VcsException {
throw new UnsupportedOperationException();
}
};
myVcsSupport = createVcsSupport(detector);
AgentCheckoutAbility canCheckout1 = myVcsSupport.canCheckout(root1, new CheckoutRules("+:dir1"), build);
AgentCheckoutAbility canCheckout2 = myVcsSupport.canCheckout(root2, new CheckoutRules("+:dir2"), build);
then(canCheckout1.getCanNotCheckoutReason()).isNull();
then(canCheckout2.getCanNotCheckoutReason().getType()).isEqualTo(AgentCanNotCheckoutReason.NOT_SUPPORTED_CHECKOUT_RULES);
then(canCheckout2.getCanNotCheckoutReason().getDetails()).contains("Cannot perform sparse checkout using git " + GIT_WITH_SPARSE_CHECKOUT.previousVersion());
}
use of jetbrains.buildServer.buildTriggers.vcs.git.command.GitExec in project teamcity-git by JetBrains.
the class SSLInvestigatorTest method createFactory.
private GitFactory createFactory() {
final GitAgentSSHService ssh = myMockery.mock(GitAgentSSHService.class);
final GitProgressLogger logger = myMockery.mock(GitProgressLogger.class);
final Context context = myMockery.mock(Context.class);
myMockery.checking(new Expectations() {
{
atLeast(1).of(context).getGitVersion();
will(returnValue(GitVersion.MIN));
atLeast(1).of(context).isDeleteTempFiles();
will(returnValue(false));
atLeast(1).of(context).getGitExec();
will(returnValue(new GitExec("git", GitVersion.MIN)));
atLeast(1).of(context).getCustomConfig();
will(returnValue(Collections.emptyList()));
atLeast(1).of(context).getLogger();
will(returnValue(logger));
atLeast(1).of(context).getTempDir();
will(returnValue(myTempDirectory));
atLeast(1).of(context).getEnv();
will(returnValue(Collections.emptyMap()));
}
});
return myLoggingFactory.createFactory(ssh, context);
}
use of jetbrains.buildServer.buildTriggers.vcs.git.command.GitExec in project teamcity-git by JetBrains.
the class AgentGitFacadeImpl method resolvePath.
@NotNull
public String resolvePath(@NotNull File f) throws VcsException {
try {
final GitExec gitExec = getCtx().getGitExec();
if (gitExec.isCygwin()) {
String cygwinBin = gitExec.getCygwinBinPath();
GeneralCommandLine cmd = new GeneralCommandLine();
cmd.setWorkDirectory(cygwinBin);
cmd.setExePath(new File(cygwinBin, "cygpath.exe").getCanonicalPath());
cmd.addParameter(f.getCanonicalPath());
ExecResult res = SimpleCommandLineProcessRunner.runCommandSecure(cmd, cmd.getCommandLineString(), null, new ProcessTimeoutCallback(30));
Throwable error = res.getException();
if (error != null)
throw error;
return res.getStdout().trim();
} else {
return f.getCanonicalPath();
}
} catch (Throwable e) {
throw new VcsException("Error while resolving path " + f.getAbsolutePath() + ": " + e.getMessage(), e);
}
}
use of jetbrains.buildServer.buildTriggers.vcs.git.command.GitExec in project teamcity-git by JetBrains.
the class GitDetectorImpl method getGitPathAndVersionInternal.
@NotNull
private GitExec getGitPathAndVersionInternal(@Nullable VcsRoot root, @Nullable BuildAgentConfiguration config, @NotNull AgentRunningBuild build) throws VcsException {
String path = getPathFromRoot(root, config);
if (path != null) {
Loggers.VCS.info("Using vcs root's git: " + path);
} else {
path = build.getSharedBuildParameters().getEnvironmentVariables().get(Constants.TEAMCITY_AGENT_GIT_PATH);
if (path != null) {
Loggers.VCS.info("Using git specified by " + Constants.TEAMCITY_AGENT_GIT_PATH + ": " + path);
} else {
path = defaultGit();
Loggers.VCS.info("Using default git: " + path);
}
}
GitVersion version = getGitVersion(path);
checkVersionIsSupported(path, version);
return new GitExec(path, version, getCygwinBinPath(path));
}
Aggregations