/// <exception cref="NGit.Errors.TransportException"></exception> internal override void Exec(string commandName) { string ssh = SystemReader.GetInstance().Getenv("GIT_SSH"); bool putty = ssh.ToLower().Contains("plink"); IList<string> args = new AList<string>(); args.AddItem(ssh); if (putty) { args.AddItem("--batch"); } if (0 < this._enclosing.GetURI().GetPort()) { args.AddItem(putty ? "-P" : "-p"); args.AddItem(this._enclosing.GetURI().GetPort().ToString()); } if (this._enclosing.GetURI().GetUser() != null) { args.AddItem(this._enclosing.GetURI().GetUser() + "@" + this._enclosing.GetURI(). GetHost()); } else { args.AddItem(this._enclosing.GetURI().GetHost()); } args.AddItem(this._enclosing.CommandFor(commandName)); ProcessStartInfo pb = new ProcessStartInfo(); pb.SetCommand(args); if (this._enclosing.local.Directory != null) { pb.EnvironmentVariables.Put(Constants.GIT_DIR_KEY, this._enclosing.local.Directory .GetPath()); } try { this.proc = pb.Start(); } catch (IOException err) { throw new TransportException(this._enclosing.uri, err.Message, err); } }
/// <exception cref="NGit.Errors.TransportException"></exception> public virtual SystemProcess Exec(string command, int timeout) { string ssh = SystemReader.GetInstance().Getenv("GIT_SSH"); bool putty = ssh.ToLower().Contains("plink"); IList<string> args = new AList<string>(); args.AddItem(ssh); if (putty && !ssh.ToLower().Contains("tortoiseplink")) { args.AddItem("-batch"); } if (0 < this._enclosing.GetURI().GetPort()) { args.AddItem(putty ? "-P" : "-p"); args.AddItem(this._enclosing.GetURI().GetPort().ToString()); } if (this._enclosing.GetURI().GetUser() != null) { args.AddItem(this._enclosing.GetURI().GetUser() + "@" + this._enclosing.GetURI(). GetHost()); } else { args.AddItem(this._enclosing.GetURI().GetHost()); } args.AddItem(command); ProcessStartInfo pb = new ProcessStartInfo(); pb.SetCommand(args); if (this._enclosing.local.Directory != null) { pb.EnvironmentVariables.Put(Constants.GIT_DIR_KEY, this._enclosing.local.Directory .GetPath()); } try { return pb.Start(); } catch (IOException err) { throw new TransportException(err.Message, err); } }
public override ProcessStartInfo RunInShell(string cmd, string[] args) { IList<string> argv = new AList<string>(3 + args.Length); argv.AddItem("cmd.exe"); argv.AddItem("/c"); argv.AddItem(cmd); Sharpen.Collections.AddAll(argv, Arrays.AsList(args)); ProcessStartInfo proc = new ProcessStartInfo(); proc.SetCommand(argv); return proc; }