コード例 #1
0
ファイル: sshrepo.py プロジェクト: pombredanne/SmartNotes
    def validate_repo(self, ui, sshcmd, args, remotecmd):
        # cleanup up previous run
        self.cleanup()

        cmd = '%s %s "%s -R %s serve --stdio"'
        cmd = cmd % (sshcmd, args, remotecmd, self.path)

        cmd = util.quotecommand(cmd)
        ui.note(_('running %s\n') % cmd)
        self.pipeo, self.pipei, self.pipee = util.popen3(cmd, 'b')

        # skip any noise generated by remote shell
        self.do_cmd("hello")
        r = self.do_cmd("between", pairs=("%s-%s" % ("0"*40, "0"*40)))
        lines = ["", "dummy"]
        max_noise = 500
        while lines[-1] and max_noise:
            l = r.readline()
            self.readerr()
            if lines[-1] == "1\n" and l == "\n":
                break
            if l:
                ui.debug(_("remote: "), l)
            lines.append(l)
            max_noise -= 1
        else:
            self.abort(error.RepoError(_("no suitable response from remote hg")))

        self.capabilities = util.set()
        lines.reverse()
        for l in lines:
            if l.startswith("capabilities:"):
                self.capabilities.update(l[:-1].split(":")[1].split())
                break
コード例 #2
0
    def validate_repo(self, ui, sshcmd, args, remotecmd):
        # cleanup up previous run
        self.cleanup()

        cmd = '%s %s %s' % (sshcmd, args,
                            util.shellquote("%s -R %s serve --stdio" %
                                            (_serverquote(remotecmd),
                                             _serverquote(self.path))))
        ui.note(_('running %s\n') % cmd)
        cmd = util.quotecommand(cmd)
        self.pipeo, self.pipei, self.pipee = util.popen3(cmd)

        # skip any noise generated by remote shell
        self._callstream("hello")
        r = self._callstream("between", pairs=("%s-%s" % ("0" * 40, "0" * 40)))
        lines = ["", "dummy"]
        max_noise = 500
        while lines[-1] and max_noise:
            l = r.readline()
            self.readerr()
            if lines[-1] == "1\n" and l == "\n":
                break
            if l:
                ui.debug("remote: ", l)
            lines.append(l)
            max_noise -= 1
        else:
            self._abort(
                error.RepoError(_("no suitable response from remote hg")))

        self.capabilities = set()
        for l in reversed(lines):
            if l.startswith("capabilities:"):
                self.capabilities.update(l[:-1].split(":")[1].split())
                break
コード例 #3
0
 def _svncommand(self, commands):
     cmd = ['svn'] + commands + [self._path]
     cmd = [util.shellquote(arg) for arg in cmd]
     cmd = util.quotecommand(' '.join(cmd))
     env = dict(os.environ)
     # Avoid localized output, preserve current locale for everything else.
     env['LC_MESSAGES'] = 'C'
     write, read, err = util.popen3(cmd, env=env, newlines=True)
     retdata = read.read()
     err = err.read().strip()
     if err:
         raise util.Abort(err)
     return retdata
コード例 #4
0
 def _svncommand(self, commands):
     path = os.path.join(self._ctx._repo.origroot, self._path)
     cmd = ['svn'] + commands + [path]
     cmd = [util.shellquote(arg) for arg in cmd]
     cmd = util.quotecommand(' '.join(cmd))
     env = dict(os.environ)
     # Avoid localized output, preserve current locale for everything else.
     env['LC_MESSAGES'] = 'C'
     write, read, err = util.popen3(cmd, env=env, newlines=True)
     retdata = read.read()
     err = err.read().strip()
     if err:
         raise util.Abort(err)
     return retdata