text: 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);}}