Пример #1
0
    def do_commit(self):
        repos = self.link.repos

        msg = parse.string(self.args[0])

        self.commit_info = None

        if self.aborted:
            self.link.send_msg(gen.error(1, "aborted"))
            return

        try:
            rev, date, author, error = repos.complete_commit(self.commit, msg)
        except HookFailure as hf:
            err, msg = hooks.pre_commit(hf.code, hf.text)
            self.link.send_msg(gen.error(err, msg))
            return

        print rev, date, author, error

        if rev is None:
            self.link.send_msg(gen.error(1, "vcs error: %s" % error))
            return

        self.commit_info = gen.list(rev, gen.list(gen.string(date)),
                                    gen.list(gen.string(author)), gen.list())

        self.link.send_msg(gen.success())
        raise ChangeMode('auth', 'command')
Пример #2
0
    def do_commit(self):
        repos = self.link.repos

        msg = parse.string(self.args[0])

        self.commit_info = None

        if self.aborted:
            self.link.send_msg(gen.error(1, "aborted"))
            return

        try:
            rev, date, author, error = repos.complete_commit(self.commit, msg)
        except HookFailure as hf:
            err, msg = hooks.pre_commit(hf.code, hf.text)
            self.link.send_msg(gen.error(err, msg))
            return

        print rev, date, author, error

        if rev is None:
            self.link.send_msg(gen.error(1, "vcs error: %s" % error))
            return

        self.commit_info = gen.list(rev, gen.list(gen.string(date)), gen.list(gen.string(author)), gen.list())

        self.link.send_msg(gen.success())
        raise ChangeMode("auth", "command")
Пример #3
0
    def do_cmd(self):
        repos = self.link.repos

        latest_rev = repos.get_latest_rev()

        if latest_rev is None:
            msg = gen.error(210005, "No repository found in '%s'" % self.link.url)
        else:
            msg = gen.success(latest_rev)

        self.link.send_msg(msg)
Пример #4
0
    def do_cmd(self):
        repos = self.link.repos

        latest_rev = repos.get_latest_rev()

        if latest_rev is None:
            msg = gen.error(210005,
                            "No repository found in '%s'" % self.link.url)
        else:
            msg = gen.success(latest_rev)

        self.link.send_msg(msg)
Пример #5
0
    def do_cmd(self):
        args = self.args

        url = parse.string(args.pop(0))

        if len(url) > 0:
            new_repo, path, base_url = self.link.server.find_repo(url)
            if new_repo != self.link.repos:
                self.link.send_msg(gen.error("URL %s is outside of repository %s" % url, self.link.base_url))
                return

            print "new url: %s" % url
            self.link.url = path

        self.link.send_msg(gen.success())
Пример #6
0
    def send_response(self, path, url, rev):
        repos = self.link.repos

        self.sendq = Queue.Queue()
        self.waitq = Queue.Queue()

        thread = threading.Thread(target=send_thread,
                                  args=(self.link, self.sendq, self.waitq))
        thread.start()

        import time

        t1 = time.time()
        print "get contents"
        contents = repos.get_files(url, rev)
        print len(contents)
        t2 = time.time()
        print t2 - t1
        print "start sending"
        self.update_dir('', rev, path, [], contents)
        print "all sends now queued"
        t3 = time.time()
        print t3 - t2
        print t3 - t1

        self.sendq.put(None)
        print "wait for sending thread"
        self.waitq.get()

        print "send close-edit message"
        self.link.send_msg(gen.tuple('close-edit'))
        msg = parse.msg(self.link.read_msg())
        if msg[0] != 'success':
            errno = msg[1][0][0]
            errmsg = parse.string(msg[1][0][1])
            self.link.send_msg(gen.tuple('abort-edit'))
            self.link.send_msg(gen.error(errno, errmsg))
        else:
            self.link.send_msg(gen.success())
Пример #7
0
    def send_response(self, path, url, rev):
        repos = self.link.repos

        self.sendq = Queue.Queue()
        self.waitq = Queue.Queue()

        thread = threading.Thread(target=send_thread,
                                  args=(self.link, self.sendq, self.waitq))
        thread.start()

        import time

        t1 = time.time()
        print "get contents"
        contents = repos.get_files(url, rev)
        print len(contents)
        t2 = time.time()
        print t2 - t1
        print "start sending"
        self.update_dir('', rev, path, [], contents)
        print "all sends now queued"
        t3 = time.time()
        print t3 - t2
        print t3 - t1

        self.sendq.put(None)
        print "wait for sending thread"
        self.waitq.get()

        print "send close-edit message"
        self.link.send_msg(gen.tuple('close-edit'))
        msg = parse.msg(self.link.read_msg())
        if msg[0] != 'success':
            errno = msg[1][0][0]
            errmsg = parse.string(msg[1][0][1])
            self.link.send_msg(gen.tuple('abort-edit'))
            self.link.send_msg(gen.error(errno, errmsg))
        else:
            self.link.send_msg(gen.success())
Пример #8
0
 def apply_textdelta(self, file_token, base_checksum):
     try:
         self.files[file_token].delta_start(base_checksum)
     except PathChanged as e:
         self.aborted = True
         self.link.send_msg(gen.error(1, "File '%s' is out of date" % e))
Пример #9
0
 def apply_textdelta(self, file_token, base_checksum):
     try:
         self.files[file_token].delta_start(base_checksum)
     except PathChanged as e:
         self.aborted = True
         self.link.send_msg(gen.error(1, "File '%s' is out of date" % e))