mirror of
https://github.com/theonedev/onedev.git
synced 2025-12-08 18:26:30 +00:00
Able to specify logger when calling various command
This commit is contained in:
parent
649e012095
commit
854c920f9d
@ -448,14 +448,14 @@ public class DefaultCommitInfoManager extends AbstractEnvironmentManager impleme
|
||||
revList.revisions(revisions).order(Order.TOPO);
|
||||
|
||||
List<ObjectId> historyIds = new ArrayList<>();
|
||||
for (String commitHash: revList.call())
|
||||
for (String commitHash: revList.call(null))
|
||||
historyIds.add(ObjectId.fromString(commitHash));
|
||||
|
||||
revList = new RevListCommand(project.getGitDir());
|
||||
revList.order(null).firstParent(true);
|
||||
|
||||
Set<ObjectId> firstParentIds = new HashSet<>();
|
||||
for (String commitHash: revList.call())
|
||||
for (String commitHash: revList.call(null))
|
||||
firstParentIds.add(ObjectId.fromString(commitHash));
|
||||
|
||||
/*
|
||||
@ -565,7 +565,7 @@ public class DefaultCommitInfoManager extends AbstractEnvironmentManager impleme
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
log.call();
|
||||
log.call(null);
|
||||
} catch (Exception e) {
|
||||
logException.set(e);
|
||||
} finally {
|
||||
|
||||
@ -24,6 +24,7 @@ import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.quartz.CronScheduleBuilder;
|
||||
import org.quartz.ScheduleBuilder;
|
||||
@ -80,6 +81,7 @@ import io.onedev.server.util.Input;
|
||||
import io.onedev.server.util.inputspec.InputSpec;
|
||||
import io.onedev.server.util.inputspec.SecretInput;
|
||||
import io.onedev.server.util.patternset.PatternSet;
|
||||
import jersey.repackaged.com.google.common.collect.Sets;
|
||||
|
||||
@Singleton
|
||||
public class DefaultJobManager implements JobManager, Runnable, SchedulableTask, CodePullAuthorizationSource {
|
||||
@ -246,11 +248,13 @@ public class DefaultJobManager implements JobManager, Runnable, SchedulableTask,
|
||||
|
||||
private void execute(Build build) {
|
||||
try {
|
||||
String jobId = UUID.randomUUID().toString();
|
||||
Collection<String> jobSecretsToMask = Sets.newHashSet(jobId);
|
||||
Job job = build.getJob();
|
||||
ObjectId commitId = ObjectId.fromString(build.getCommitHash());
|
||||
JobExecutor executor = getJobExecutor(build.getProject(), commitId, job.getName(), job.getEnvironment());
|
||||
if (executor != null) {
|
||||
Logger logger = logManager.getLogger(build, job.getLogLevel());
|
||||
Logger logger = logManager.getLogger(build, job.getLogLevel(), jobSecretsToMask);
|
||||
|
||||
Long buildId = build.getId();
|
||||
String projectName = build.getProject().getName();
|
||||
@ -334,7 +338,6 @@ public class DefaultJobManager implements JobManager, Runnable, SchedulableTask,
|
||||
|
||||
};
|
||||
|
||||
String jobId = UUID.randomUUID().toString();
|
||||
jobContexts.put(jobId, jobContext);
|
||||
try {
|
||||
executor.execute(jobId, jobContext);
|
||||
@ -356,7 +359,14 @@ public class DefaultJobManager implements JobManager, Runnable, SchedulableTask,
|
||||
} catch (Exception e) {
|
||||
if (ExceptionUtils.find(e, InterruptedException.class) == null)
|
||||
logger.error("Error running build", e);
|
||||
throw e;
|
||||
String errorMessage = e.getMessage();
|
||||
if (errorMessage != null) {
|
||||
for (String secret: jobSecretsToMask)
|
||||
errorMessage = StringUtils.replace(errorMessage, secret, SecretInput.MASK);
|
||||
throw new RuntimeException(errorMessage);
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
} finally {
|
||||
logger.info("Deleting server workspace...");
|
||||
executor.cleanDir(serverWorkspace);
|
||||
|
||||
@ -92,11 +92,12 @@ public class DefaultLogManager implements LogManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Logger getLogger(Build build, LogLevel loggerLevel) {
|
||||
public Logger getLogger(Build build, LogLevel loggerLevel, Collection<String> jobSecretsToMask) {
|
||||
Long projectId = build.getProject().getId();
|
||||
Long buildId = build.getId();
|
||||
Long buildNumber = build.getNumber();
|
||||
Collection<String> secretValuesToMask = build.getSecretValuesToMask();
|
||||
secretValuesToMask.addAll(jobSecretsToMask);
|
||||
return new JobLogger(loggerLevel) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package io.onedev.server.ci.job.log;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
@ -9,7 +10,7 @@ import io.onedev.server.model.Build;
|
||||
|
||||
public interface LogManager {
|
||||
|
||||
Logger getLogger(Build build, LogLevel logLevel);
|
||||
Logger getLogger(Build build, LogLevel logLevel, Collection<String> jobSecrets);
|
||||
|
||||
/**
|
||||
* Read specified number of log entries from specified build, starting from specified index
|
||||
|
||||
@ -193,7 +193,7 @@ public class DefaultCodeCommentManager extends AbstractEntityManager<CodeComment
|
||||
command.after(DateUtils.addDays(oldestDate, -1));
|
||||
command.revisions(Lists.newArrayList(commitId.name()));
|
||||
command.count(MAX_HISTORY_COMMITS_TO_CHECK);
|
||||
Set<String> revisions = new HashSet<>(command.call());
|
||||
Set<String> revisions = new HashSet<>(command.call(null));
|
||||
|
||||
RevCommit commit = revWalk.parseCommit(commitId);
|
||||
List<String> newLines = GitUtils.readLines(project.getRepository(), commit, path,
|
||||
|
||||
@ -208,7 +208,7 @@ public class DefaultProjectManager extends AbstractEntityManager<Project> implem
|
||||
public void fork(Project from, Project to) {
|
||||
save(to);
|
||||
FileUtils.cleanDir(to.getGitDir());
|
||||
new CloneCommand(to.getGitDir()).mirror(true).from(from.getGitDir().getAbsolutePath()).call();
|
||||
new CloneCommand(to.getGitDir()).mirror(true).from(from.getGitDir().getAbsolutePath()).call(null);
|
||||
commitInfoManager.cloneInfo(from, to);
|
||||
avatarManager.copyAvatar(from.getFacade(), to.getFacade());
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ public class GitFilter implements Filter {
|
||||
try {
|
||||
InputStream is = ServletUtils.getInputStream(request);
|
||||
OutputStream os = response.getOutputStream();
|
||||
new UploadCommand(gitDir, environments).input(is).output(os).call();
|
||||
new UploadCommand(gitDir, environments).input(is).output(os).call(null);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -174,7 +174,7 @@ public class GitFilter implements Filter {
|
||||
try {
|
||||
InputStream is = ServletUtils.getInputStream(request);
|
||||
OutputStream os = response.getOutputStream();
|
||||
new ReceiveCommand(gitDir, environments).input(is).output(os).call();
|
||||
new ReceiveCommand(gitDir, environments).input(is).output(os).call(null);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -221,13 +221,13 @@ public class GitFilter implements Filter {
|
||||
if (service.contains("upload")) {
|
||||
checkPullPermission(request, project);
|
||||
writeInitial(response, service);
|
||||
new AdvertiseUploadRefsCommand(gitDir).output(response.getOutputStream()).call();
|
||||
new AdvertiseUploadRefsCommand(gitDir).output(response.getOutputStream()).call(null);
|
||||
} else {
|
||||
if (!SecurityUtils.canWriteCode(project.getFacade())) {
|
||||
throw new UnauthorizedException("You do not have permission to push to this project.");
|
||||
}
|
||||
writeInitial(response, service);
|
||||
new AdvertiseReceiveRefsCommand(gitDir).output(response.getOutputStream()).call();
|
||||
new AdvertiseReceiveRefsCommand(gitDir).output(response.getOutputStream()).call(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -327,7 +327,7 @@ public class GitUtils {
|
||||
new FetchCommand(toRepository.getDirectory())
|
||||
.from(fromRepository.getDirectory().getAbsolutePath())
|
||||
.refspec(fetchRef)
|
||||
.call();
|
||||
.call(null);
|
||||
} else {
|
||||
LockUtils.call("repository-fetch:" + fromRepository.getDirectory(), new Callable<Void>() {
|
||||
|
||||
@ -340,7 +340,7 @@ public class GitUtils {
|
||||
new FetchCommand(toRepository.getDirectory())
|
||||
.from(fromRepository.getDirectory().getAbsolutePath())
|
||||
.refspec(refUpdate.getName())
|
||||
.call();
|
||||
.call(null);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -356,7 +356,7 @@ public class GitUtils {
|
||||
if (gitEnvs != null && !gitEnvs.isEmpty()) {
|
||||
IsAncestorCommand cmd = new IsAncestorCommand(repository.getDirectory(), gitEnvs);
|
||||
cmd.ancestor(base.name()).descendant(tip.name());
|
||||
return cmd.call();
|
||||
return cmd.call(null);
|
||||
} else {
|
||||
try (RevWalk revWalk = new RevWalk(repository)) {
|
||||
RevCommit baseCommit;
|
||||
|
||||
@ -27,19 +27,20 @@ public class AdvertiseReceiveRefsCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(output);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:AdvertiseReceiveRefsCommand.logger;
|
||||
Commandline cmd = cmd();
|
||||
cmd.addArgs("receive-pack", "--stateless-rpc", "--advertise-refs", ".");
|
||||
cmd.execute(output, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -27,19 +27,20 @@ public class AdvertiseUploadRefsCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(output);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:AdvertiseUploadRefsCommand.logger;
|
||||
Commandline cmd = cmd();
|
||||
cmd.addArgs("upload-pack", "--stateless-rpc", "--advertise-refs", ".");
|
||||
cmd.execute(output, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ public class BlameCommand extends GitCommand<Collection<BlameBlock>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<BlameBlock> call() {
|
||||
public Collection<BlameBlock> call(Logger logger) {
|
||||
Preconditions.checkArgument(commitHash!=null && ObjectId.isId(commitHash), "commit hash has to be specified.");
|
||||
Preconditions.checkNotNull(file, "file parameter has to be specified.");
|
||||
|
||||
@ -111,6 +111,7 @@ public class BlameCommand extends GitCommand<Collection<BlameBlock>> {
|
||||
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:BlameCommand.logger;
|
||||
ExecuteResult result = cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
@ -159,13 +160,13 @@ public class BlameCommand extends GitCommand<Collection<BlameBlock>> {
|
||||
public void consume(String line) {
|
||||
if (line.startsWith("fatal: file ") && line.contains("has only ")) {
|
||||
endOfFile.set(true);
|
||||
logger.trace(line.substring("fatal: ".length()));
|
||||
effectiveLogger.trace(line.substring("fatal: ".length()));
|
||||
} else {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}, logger);
|
||||
|
||||
if (!endOfFile.get())
|
||||
result.checkReturnCode();
|
||||
|
||||
@ -26,26 +26,27 @@ public class CheckoutCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(refspec, "refspec param has to be specified.");
|
||||
|
||||
Commandline cmd = cmd().addArgs("checkout", "--quiet", refspec);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:CheckoutCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
}
|
||||
|
||||
}, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -24,27 +24,28 @@ public class CleanCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Commandline cmd = cmd().addArgs("clean");
|
||||
|
||||
if (options != null)
|
||||
cmd.addArgs(options);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:CleanCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
}
|
||||
|
||||
}, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ public class CloneCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(from, "from has to be specified.");
|
||||
|
||||
Commandline cmd = cmd().addArgs("clone");
|
||||
@ -79,11 +79,12 @@ public class CloneCommand extends GitCommand<Void> {
|
||||
cmd.addArgs(from);
|
||||
cmd.addArgs(".");
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:CloneCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
}
|
||||
|
||||
}, new LineConsumer(){
|
||||
@ -91,14 +92,14 @@ public class CloneCommand extends GitCommand<Void> {
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
if (line.startsWith("Cloning into ") || line.equals("done."))
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
else if (line.contains("You appear to have cloned an empty repository"))
|
||||
logger.warn(line);
|
||||
effectiveLogger.warn(line);
|
||||
else
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ public class FetchCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(from, "from param has to be specified.");
|
||||
|
||||
Commandline cmd = cmd().addArgs("fetch");
|
||||
@ -52,21 +52,22 @@ public class FetchCommand extends GitCommand<Void> {
|
||||
for (String each: refspec)
|
||||
cmd.addArgs(each);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:FetchCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
}
|
||||
|
||||
}, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ package io.onedev.server.git.command;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@ -17,7 +16,7 @@ import io.onedev.commons.utils.command.LineConsumer;
|
||||
import io.onedev.server.git.GitVersion;
|
||||
import io.onedev.server.git.config.GitConfig;
|
||||
|
||||
public abstract class GitCommand<V> implements Callable<V> {
|
||||
public abstract class GitCommand<V> {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(GitCommand.class);
|
||||
|
||||
@ -38,7 +37,7 @@ public abstract class GitCommand<V> implements Callable<V> {
|
||||
public GitCommand(File gitDir) {
|
||||
this(gitDir, null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if there are any errors with git command line.
|
||||
*
|
||||
@ -101,7 +100,6 @@ public abstract class GitCommand<V> implements Callable<V> {
|
||||
return AppLoader.getInstance(GitConfig.class).getExecutable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract V call();
|
||||
|
||||
public abstract V call(@Nullable Logger logger);
|
||||
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ public class InitCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(from, "from param has to be specified.");
|
||||
|
||||
Commandline cmd = cmd().addArgs("fetch");
|
||||
@ -43,11 +43,12 @@ public class InitCommand extends GitCommand<Void> {
|
||||
for (String each: refspec)
|
||||
cmd.addArgs(each);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:InitCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
}
|
||||
|
||||
}, new LineConsumer() {
|
||||
@ -58,13 +59,13 @@ public class InitCommand extends GitCommand<Void> {
|
||||
|| line.startsWith(" * branch")
|
||||
|| line.startsWith(" * [new ref]")
|
||||
|| line.contains("..") && line.contains("->")) {
|
||||
logger.info(line);
|
||||
effectiveLogger.info(line);
|
||||
} else {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ public class IsAncestorCommand extends GitCommand<Boolean> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean call() {
|
||||
public Boolean call(Logger logger) {
|
||||
Preconditions.checkNotNull(ancestor, "ancestor has to be specified.");
|
||||
Preconditions.checkNotNull(descendant, "descendant has to be specified.");
|
||||
|
||||
@ -43,6 +43,7 @@ public class IsAncestorCommand extends GitCommand<Boolean> {
|
||||
|
||||
cmd.addArgs("merge-base", "--is-ancestor", ancestor, descendant);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:IsAncestorCommand.logger;
|
||||
ExecuteResult result = cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
@ -53,10 +54,10 @@ public class IsAncestorCommand extends GitCommand<Boolean> {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
});
|
||||
}, logger);
|
||||
|
||||
if (result.getReturnCode() == 0)
|
||||
return true;
|
||||
|
||||
@ -45,7 +45,7 @@ public class ListChangedFilesCommand extends GitCommand<Collection<String>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> call() {
|
||||
public Collection<String> call(Logger logger) {
|
||||
Preconditions.checkNotNull(toRev, "toRev has to be specified.");
|
||||
Preconditions.checkNotNull(fromRev, "fromRev has to be specified.");
|
||||
|
||||
@ -58,6 +58,7 @@ public class ListChangedFilesCommand extends GitCommand<Collection<String>> {
|
||||
if (path != null)
|
||||
cmd.addArgs("--", path);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:ListChangedFilesCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
@ -70,10 +71,10 @@ public class ListChangedFilesCommand extends GitCommand<Collection<String>> {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return changedFiles;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ public class ListFileChangesCommand extends GitCommand<Collection<FileChange>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<FileChange> call() {
|
||||
public Collection<FileChange> call(Logger logger) {
|
||||
Preconditions.checkNotNull(toRev, "toRev has to be specified.");
|
||||
Preconditions.checkNotNull(fromRev, "fromRev has to be specified.");
|
||||
|
||||
@ -57,6 +57,7 @@ public class ListFileChangesCommand extends GitCommand<Collection<FileChange>> {
|
||||
if (path != null)
|
||||
cmd.addArgs("--", path);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:ListFileChangesCommand.logger;
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@Override
|
||||
@ -88,10 +89,10 @@ public class ListFileChangesCommand extends GitCommand<Collection<FileChange>> {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return fileChanges;
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ public abstract class LogCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkArgument(!revisions.isEmpty(), "Log revisions have to be specified");
|
||||
|
||||
Commandline cmd = cmd();
|
||||
@ -83,6 +83,8 @@ public abstract class LogCommand extends GitCommand<Void> {
|
||||
|
||||
for (String revision: revisions)
|
||||
cmd.addArgs(revision);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:LogCommand.logger;
|
||||
|
||||
AtomicReference<GitCommit.Builder> commitBuilderRef = new AtomicReference<>(null);
|
||||
cmd.execute(new LineConsumer() {
|
||||
@ -157,13 +159,13 @@ public abstract class LogCommand extends GitCommand<Void> {
|
||||
public void consume(String line) {
|
||||
if (line.contains("inexact rename detection was skipped")
|
||||
|| line.contains("you may want to set your diff.renameLimit variable")) {
|
||||
logger.trace(line);
|
||||
effectiveLogger.trace(line);
|
||||
} else {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
if (commitBuilderRef.get() != null)
|
||||
consume(commitBuilderRef.get().build());
|
||||
|
||||
@ -36,21 +36,22 @@ public class ReceiveCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(input);
|
||||
Preconditions.checkNotNull(output);
|
||||
|
||||
Commandline cmd = cmd();
|
||||
cmd.addArgs("receive-pack", "--stateless-rpc", ".");
|
||||
|
||||
cmd.execute(output, new LineConsumer() {
|
||||
Logger effectiveLogger = logger!=null?logger:ReceiveCommand.logger;
|
||||
cmd.execute(output, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}, input).checkReturnCode();
|
||||
}, input, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ public class RevListCommand extends GitCommand<List<String>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> call() {
|
||||
public List<String> call(Logger logger) {
|
||||
Commandline cmd = cmd();
|
||||
cmd.addArgs("rev-list");
|
||||
|
||||
@ -218,6 +218,8 @@ public class RevListCommand extends GitCommand<List<String>> {
|
||||
for (String path: paths)
|
||||
cmd.addArgs(path);
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:RevListCommand.logger;
|
||||
|
||||
List<String> commitHashes = new ArrayList<>();
|
||||
cmd.execute(new LineConsumer() {
|
||||
|
||||
@ -230,10 +232,10 @@ public class RevListCommand extends GitCommand<List<String>> {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}).checkReturnCode();
|
||||
}, logger).checkReturnCode();
|
||||
|
||||
return commitHashes;
|
||||
}
|
||||
|
||||
@ -36,21 +36,22 @@ public class UploadCommand extends GitCommand<Void> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() {
|
||||
public Void call(Logger logger) {
|
||||
Preconditions.checkNotNull(input);
|
||||
Preconditions.checkNotNull(output);
|
||||
|
||||
Commandline cmd = cmd();
|
||||
cmd.addArgs("upload-pack", "--stateless-rpc", ".");
|
||||
|
||||
Logger effectiveLogger = logger!=null?logger:UploadCommand.logger;
|
||||
cmd.execute(output, new LineConsumer() {
|
||||
|
||||
@Override
|
||||
public void consume(String line) {
|
||||
logger.error(line);
|
||||
effectiveLogger.error(line);
|
||||
}
|
||||
|
||||
}, input).checkReturnCode();
|
||||
}, input, logger).checkReturnCode();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -1303,7 +1303,7 @@ public class Project extends AbstractEntity implements Validatable {
|
||||
|
||||
List<User> authors = new ArrayList<>();
|
||||
UserManager userManager = OneDev.getInstance(UserManager.class);
|
||||
for (BlameBlock block: cmd.call()) {
|
||||
for (BlameBlock block: cmd.call(null)) {
|
||||
User author = userManager.find(block.getCommit().getAuthor());
|
||||
if (author != null && !authors.contains(author))
|
||||
authors.add(author);
|
||||
@ -1434,7 +1434,7 @@ public class Project extends AbstractEntity implements Validatable {
|
||||
if (gitEnvs != null && !gitEnvs.isEmpty()) {
|
||||
ListChangedFilesCommand cmd = new ListChangedFilesCommand(getGitDir(), gitEnvs);
|
||||
cmd.fromRev(oldObjectId.name()).toRev(newObjectId.name());
|
||||
return cmd.call();
|
||||
return cmd.call(null);
|
||||
} else {
|
||||
return GitUtils.getChangedFiles(getRepository(), oldObjectId, newObjectId);
|
||||
}
|
||||
|
||||
@ -108,7 +108,7 @@ public class PullRequestUpdate extends AbstractEntity {
|
||||
ListFileChangesCommand cmd = new ListFileChangesCommand(getRequest().getTargetProject().getGitDir());
|
||||
cmd.fromRev(getBaseCommitHash());
|
||||
cmd.toRev(getHeadCommitHash());
|
||||
fileChanges = cmd.call();
|
||||
fileChanges = cmd.call(null);
|
||||
}
|
||||
return fileChanges;
|
||||
}
|
||||
|
||||
@ -96,8 +96,8 @@ public abstract class JobContext {
|
||||
}
|
||||
|
||||
private void fetchAndCheckout(File gitDir) {
|
||||
new FetchCommand(gitDir).depth(1).from(gitDir.getAbsolutePath()).refspec(commitId.name()).call();
|
||||
new CheckoutCommand(gitDir).refspec(commitId.name()).call();
|
||||
new FetchCommand(gitDir).depth(1).from(gitDir.getAbsolutePath()).refspec(commitId.name()).call(logger);
|
||||
new CheckoutCommand(gitDir).refspec(commitId.name()).call(logger);
|
||||
}
|
||||
|
||||
public void checkoutSource(File dir) {
|
||||
|
||||
@ -160,7 +160,7 @@ public class CommitListPanel extends Panel {
|
||||
if (command.revisions().isEmpty() && getCompareWith() != null)
|
||||
command.revisions(Lists.newArrayList(getCompareWith()));
|
||||
|
||||
commitHashes = command.call();
|
||||
commitHashes = command.call(null);
|
||||
} catch (Exception e) {
|
||||
if (e.getMessage() != null)
|
||||
error(e.getMessage());
|
||||
|
||||
@ -155,7 +155,7 @@ public class TextDiffPanel extends Panel implements SourceAware {
|
||||
String oldPath = change.getOldBlobIdent().path;
|
||||
if (oldPath != null) {
|
||||
cmd.commitHash(getOldCommit().name()).file(oldPath);
|
||||
for (BlameBlock blame: cmd.call()) {
|
||||
for (BlameBlock blame: cmd.call(null)) {
|
||||
for (LinearRange range: blame.getRanges()) {
|
||||
for (int i=range.getFrom(); i<=range.getTo(); i++)
|
||||
blameInfo.oldBlame.put(i, blame.getCommit());
|
||||
@ -165,7 +165,7 @@ public class TextDiffPanel extends Panel implements SourceAware {
|
||||
String newPath = change.getNewBlobIdent().path;
|
||||
if (newPath != null) {
|
||||
cmd.commitHash(getNewCommit().name()).file(newPath);
|
||||
for (BlameBlock blame: cmd.call()) {
|
||||
for (BlameBlock blame: cmd.call(null)) {
|
||||
for (LinearRange range: blame.getRanges()) {
|
||||
for (int i=range.getFrom(); i<=range.getTo(); i++)
|
||||
blameInfo.newBlame.put(i, blame.getCommit());
|
||||
|
||||
@ -839,7 +839,7 @@ public class SourceViewPanel extends BlobViewPanel implements Positionable, Sear
|
||||
|
||||
BlameCommand cmd = new BlameCommand(context.getProject().getGitDir());
|
||||
cmd.commitHash(commitHash).file(context.getBlobIdent().path);
|
||||
for (BlameBlock blame: cmd.call()) {
|
||||
for (BlameBlock blame: cmd.call(null)) {
|
||||
BlameInfo blameInfo = new BlameInfo();
|
||||
blameInfo.commitDate = DateUtils.formatDate(blame.getCommit().getCommitter().getWhen());
|
||||
blameInfo.authorName = HtmlEscape.escapeHtml5(blame.getCommit().getAuthor().getName());
|
||||
|
||||
@ -31,7 +31,7 @@ public class BlameCommandTest extends AbstractGitTest {
|
||||
Collection<BlameBlock> blames = new BlameCommand(git.getRepository().getDirectory())
|
||||
.commitHash(commitHash)
|
||||
.file("file")
|
||||
.call();
|
||||
.call(null);
|
||||
assertEquals(1, blames.size());
|
||||
assertEquals(commitHash + ": 0-8", blames.iterator().next().toString());
|
||||
|
||||
@ -53,7 +53,7 @@ public class BlameCommandTest extends AbstractGitTest {
|
||||
.commitHash(commitHash)
|
||||
.file("file")
|
||||
.range(new LinearRange(5, 8))
|
||||
.call();
|
||||
.call(null);
|
||||
assertEquals(2, blames.size());
|
||||
|
||||
assertEquals(commitHash + ": 8-8", getBlock(blames, commitHash).toString());
|
||||
@ -69,7 +69,7 @@ public class BlameCommandTest extends AbstractGitTest {
|
||||
blames = new BlameCommand(git.getRepository().getDirectory())
|
||||
.commitHash(commitHash)
|
||||
.file("file")
|
||||
.call();
|
||||
.call(null);
|
||||
|
||||
commitHash = git.getRepository().resolve("master~1").name();
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ public class LogCommandTest extends AbstractGitTest {
|
||||
commits.add(commit);
|
||||
}
|
||||
|
||||
}.revisions(Lists.newArrayList("master")).call();
|
||||
}.revisions(Lists.newArrayList("master")).call(null);
|
||||
|
||||
assertEquals(2, commits.size());
|
||||
|
||||
|
||||
@ -136,7 +136,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
output.append(line).append("\n");
|
||||
}
|
||||
|
||||
}, newErrorLogger(logger)).checkReturnCode();
|
||||
}, newErrorLogger(logger), logger).checkReturnCode();
|
||||
|
||||
Map<String, Object> map;
|
||||
try {
|
||||
@ -160,6 +160,8 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
|
||||
@Override
|
||||
public void execute(String jobId, JobContext context) {
|
||||
Logger logger = context.getLogger();
|
||||
|
||||
getCapacityRunner().call(new Callable<Void>() {
|
||||
|
||||
@Override
|
||||
@ -175,7 +177,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
logger.info("Pulling image...") ;
|
||||
Commandline docker = getDocker();
|
||||
docker.addArgs("pull", context.getEnvironment());
|
||||
docker.execute(newInfoLogger(logger), newErrorLogger(logger)).checkReturnCode();
|
||||
docker.execute(newInfoLogger(logger), newErrorLogger(logger), logger).checkReturnCode();
|
||||
|
||||
docker.clearArgs();
|
||||
String jobInstance = UUID.randomUUID().toString();
|
||||
@ -256,7 +258,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
logger.info("Stopping container...");
|
||||
Commandline cmd = getDocker();
|
||||
cmd.addArgs("stop", jobInstance);
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger));
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), logger);
|
||||
}
|
||||
|
||||
}, logger).checkReturnCode();
|
||||
@ -320,7 +322,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), input).checkReturnCode();
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), input, logger).checkReturnCode();
|
||||
}
|
||||
}
|
||||
|
||||
@ -415,7 +417,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
|
||||
Commandline cmd = getDocker();
|
||||
cmd.addArgs("pull", testData.getDockerImage());
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger)).checkReturnCode();
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), logger).checkReturnCode();
|
||||
|
||||
boolean windows = getImageOS(logger, testData.getDockerImage()).equals("windows");
|
||||
|
||||
@ -453,7 +455,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
else
|
||||
cmd.addArgs("sh", "-c", "echo hello from container");
|
||||
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger)).checkReturnCode();
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), logger).checkReturnCode();
|
||||
} finally {
|
||||
if (workspaceDir != null)
|
||||
FileUtils.deleteDir(workspaceDir);
|
||||
@ -467,7 +469,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
logger.info("Checking busybox...");
|
||||
cmd = getDocker();
|
||||
cmd.addArgs("run", "--rm", "busybox", "sh", "-c", "echo hello from busybox");
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger)).checkReturnCode();
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), logger).checkReturnCode();
|
||||
}
|
||||
}
|
||||
|
||||
@ -480,7 +482,7 @@ public class ServerDockerExecutor extends JobExecutor implements Testable<TestDa
|
||||
String containerPath = "/onedev_dir_to_clean";
|
||||
cmd.addArgs("run", "-v", dir.getAbsolutePath() + ":" + containerPath, "--rm",
|
||||
"busybox", "sh", "-c", "rm -rf " + containerPath + "/*");
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger)).checkReturnCode();
|
||||
cmd.execute(newInfoLogger(logger), newErrorLogger(logger), logger).checkReturnCode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user