Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- .../src/org/spearce/jgit/pgm/Daemon.java | 5 +++++ .../src/org/spearce/jgit/pgm/Fetch.java | 5 +++++ .../src/org/spearce/jgit/pgm/LsRemote.java | 6 ++++++ .../src/org/spearce/jgit/pgm/Push.java | 5 +++++ .../src/org/spearce/jgit/pgm/UploadPack.java | 6 ++++++ 5 files changed, 27 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java index e064fd8..6508910 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Daemon.java @@ -54,6 +54,9 @@ @Option(name = "--listen", metaVar = "HOSTNAME", usage = "hostname (or ip) to listen on") String host; + @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity") + int timeout = -1; + @Option(name = "--enable", metaVar = "SERVICE", usage = "enable the service in all repositories", multiValued = true) final List<String> enable = new ArrayList<String>(); @@ -85,6 +88,8 @@ protected void run() throws Exception { host != null ? new InetSocketAddress(host, port) : new InetSocketAddress(port)); d.setExportAll(exportAll); + if (0 <= timeout) + d.setTimeout(timeout); for (final String n : enable) service(d, n).setEnabled(true); diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java index 81d6893..d7be9fa 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Fetch.java @@ -48,6 +48,9 @@ @Command(common = true, usage = "Update remote refs from another repository") class Fetch extends AbstractFetchCommand { + @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity") + int timeout = -1; + @Option(name = "--fsck", usage = "perform fsck style checks on receive") private Boolean fsck; @@ -86,6 +89,8 @@ protected void run() throws Exception { tn.setDryRun(dryRun); if (thin != null) tn.setFetchThin(thin.booleanValue()); + if (0 <= timeout) + tn.setTimeout(timeout); final FetchResult r; try { r = tn.fetch(new TextProgressMonitor(), toget); diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java index bfa38ec..da2de9a 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/LsRemote.java @@ -38,18 +38,24 @@ package org.spearce.jgit.pgm; import org.kohsuke.args4j.Argument; +import org.kohsuke.args4j.Option; import org.spearce.jgit.lib.AnyObjectId; import org.spearce.jgit.lib.Ref; import org.spearce.jgit.transport.FetchConnection; import org.spearce.jgit.transport.Transport; class LsRemote extends TextBuiltin { + @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity") + int timeout = -1; + @Argument(index = 0, metaVar = "uri-ish", required = true) private String remote; @Override protected void run() throws Exception { final Transport tn = Transport.open(db, remote); + if (0 <= timeout) + tn.setTimeout(timeout); final FetchConnection c = tn.openFetch(); try { for (final Ref r : c.getRefs()) { diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java index 19d31a1..018a521 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/Push.java @@ -55,6 +55,9 @@ @Command(common = true, usage = "Update remote repository from local refs") class Push extends TextBuiltin { + @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity") + int timeout = -1; + @Argument(index = 0, metaVar = "uri-ish") private String remote = "origin"; @@ -104,6 +107,8 @@ protected void run() throws Exception { final List<Transport> transports = Transport.openAll(db, remote); for (final Transport transport : transports) { + if (0 <= timeout) + transport.setTimeout(timeout); transport.setPushThin(thin); if (receivePack != null) transport.setOptionReceivePack(receivePack); diff --git a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java index d09d442..1d9af24 100644 --- a/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java +++ b/org.spearce.jgit.pgm/src/org/spearce/jgit/pgm/UploadPack.java @@ -40,10 +40,14 @@ import java.io.File; import org.kohsuke.args4j.Argument; +import org.kohsuke.args4j.Option; import org.spearce.jgit.lib.Repository; @Command(common = false, usage = "Server side backend for 'jgit fetch'") class UploadPack extends TextBuiltin { + @Option(name = "--timeout", metaVar = "SECONDS", usage = "abort connection if no activity") + int timeout = -1; + @Argument(index = 0, required = true, metaVar = "DIRECTORY", usage = "Repository to read from") File srcGitdir; @@ -62,6 +66,8 @@ protected void run() throws Exception { if (!db.getObjectsDirectory().isDirectory()) throw die("'" + srcGitdir.getPath() + "' not a git repository"); rp = new org.spearce.jgit.transport.UploadPack(db); + if (0 <= timeout) + rp.setTimeout(timeout); rp.upload(System.in, System.out, System.err); } } -- 1.6.3.2.416.g04d0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html