Show More
@@ -114,7 +114,7 b' def _explain_watch_limit(ui, repo, count' | |||||
114 | raise util.Abort(_('cannot watch %s until inotify watch limit is raised') |
|
114 | raise util.Abort(_('cannot watch %s until inotify watch limit is raised') | |
115 | % repo.root) |
|
115 | % repo.root) | |
116 |
|
116 | |||
117 | class Watcher(object): |
|
117 | class RepoWatcher(object): | |
118 | poll_events = select.POLLIN |
|
118 | poll_events = select.POLLIN | |
119 | statuskeys = 'almr!?' |
|
119 | statuskeys = 'almr!?' | |
120 |
|
120 | |||
@@ -545,10 +545,10 b' class Watcher(object):' | |||||
545 | class Server(object): |
|
545 | class Server(object): | |
546 | poll_events = select.POLLIN |
|
546 | poll_events = select.POLLIN | |
547 |
|
547 | |||
548 | def __init__(self, ui, repo, watcher, timeout): |
|
548 | def __init__(self, ui, repo, repowatcher, timeout): | |
549 | self.ui = ui |
|
549 | self.ui = ui | |
550 | self.repo = repo |
|
550 | self.repo = repo | |
551 | self.watcher = watcher |
|
551 | self.repowatcher = repowatcher | |
552 | self.timeout = timeout |
|
552 | self.timeout = timeout | |
553 | self.sock = socket.socket(socket.AF_UNIX) |
|
553 | self.sock = socket.socket(socket.AF_UNIX) | |
554 | self.sockpath = self.repo.join('inotify.sock') |
|
554 | self.sockpath = self.repo.join('inotify.sock') | |
@@ -602,36 +602,38 b' class Server(object):' | |||||
602 |
|
602 | |||
603 | self.ui.note(_('answering query for %r\n') % states) |
|
603 | self.ui.note(_('answering query for %r\n') % states) | |
604 |
|
604 | |||
605 | if self.watcher.timeout: |
|
605 | if self.repowatcher.timeout: | |
606 | # We got a query while a rescan is pending. Make sure we |
|
606 | # We got a query while a rescan is pending. Make sure we | |
607 | # rescan before responding, or we could give back a wrong |
|
607 | # rescan before responding, or we could give back a wrong | |
608 | # answer. |
|
608 | # answer. | |
609 | self.watcher.handle_timeout() |
|
609 | self.repowatcher.handle_timeout() | |
610 |
|
610 | |||
611 | if not names: |
|
611 | if not names: | |
612 | def genresult(states, tree): |
|
612 | def genresult(states, tree): | |
613 | for fn, state in self.watcher.walk(states, tree): |
|
613 | for fn, state in self.repowatcher.walk(states, tree): | |
614 | yield fn |
|
614 | yield fn | |
615 | else: |
|
615 | else: | |
616 | def genresult(states, tree): |
|
616 | def genresult(states, tree): | |
617 | for fn in names: |
|
617 | for fn in names: | |
618 | l = self.watcher.lookup(fn, tree) |
|
618 | l = self.repowatcher.lookup(fn, tree) | |
619 | try: |
|
619 | try: | |
620 | if l in states: |
|
620 | if l in states: | |
621 | yield fn |
|
621 | yield fn | |
622 | except TypeError: |
|
622 | except TypeError: | |
623 | for f, s in self.watcher.walk(states, l, fn): |
|
623 | for f, s in self.repowatcher.walk(states, l, fn): | |
624 | yield f |
|
624 | yield f | |
625 |
|
625 | |||
626 | results = ['\0'.join(r) for r in [ |
|
626 | results = ['\0'.join(r) for r in [ | |
627 | genresult('l', self.watcher.statustrees['l']), |
|
627 | genresult('l', self.repowatcher.statustrees['l']), | |
628 | genresult('m', self.watcher.statustrees['m']), |
|
628 | genresult('m', self.repowatcher.statustrees['m']), | |
629 | genresult('a', self.watcher.statustrees['a']), |
|
629 | genresult('a', self.repowatcher.statustrees['a']), | |
630 | genresult('r', self.watcher.statustrees['r']), |
|
630 | genresult('r', self.repowatcher.statustrees['r']), | |
631 | genresult('!', self.watcher.statustrees['!']), |
|
631 | genresult('!', self.repowatcher.statustrees['!']), | |
632 | '?' in states and genresult('?', self.watcher.statustrees['?']) or [], |
|
632 | '?' in states | |
|
633 | and genresult('?', self.repowatcher.statustrees['?']) | |||
|
634 | or [], | |||
633 | [], |
|
635 | [], | |
634 | 'c' in states and genresult('n', self.watcher.tree) or [], |
|
636 | 'c' in states and genresult('n', self.repowatcher.tree) or [], | |
635 | ]] |
|
637 | ]] | |
636 |
|
638 | |||
637 | try: |
|
639 | try: | |
@@ -661,10 +663,10 b' class Master(object):' | |||||
661 | self.ui = ui |
|
663 | self.ui = ui | |
662 | self.repo = repo |
|
664 | self.repo = repo | |
663 | self.poll = select.poll() |
|
665 | self.poll = select.poll() | |
664 | self.watcher = Watcher(ui, repo, self) |
|
666 | self.repowatcher = RepoWatcher(ui, repo, self) | |
665 | self.server = Server(ui, repo, self.watcher, timeout) |
|
667 | self.server = Server(ui, repo, self.repowatcher, timeout) | |
666 | self.table = {} |
|
668 | self.table = {} | |
667 | for obj in (self.watcher, self.server): |
|
669 | for obj in (self.repowatcher, self.server): | |
668 | fd = obj.fileno() |
|
670 | fd = obj.fileno() | |
669 | self.table[fd] = obj |
|
671 | self.table[fd] = obj | |
670 | self.poll.register(fd, obj.poll_events) |
|
672 | self.poll.register(fd, obj.poll_events) | |
@@ -677,7 +679,7 b' class Master(object):' | |||||
677 | obj.shutdown() |
|
679 | obj.shutdown() | |
678 |
|
680 | |||
679 | def run(self): |
|
681 | def run(self): | |
680 | self.watcher.setup() |
|
682 | self.repowatcher.setup() | |
681 | self.ui.note(_('finished setup\n')) |
|
683 | self.ui.note(_('finished setup\n')) | |
682 | if os.getenv('TIME_STARTUP'): |
|
684 | if os.getenv('TIME_STARTUP'): | |
683 | sys.exit(0) |
|
685 | sys.exit(0) | |
@@ -733,7 +735,7 b' def start(ui, repo):' | |||||
733 | if pid: |
|
735 | if pid: | |
734 | return pid |
|
736 | return pid | |
735 |
|
737 | |||
736 | closefds([m.server.fileno(), m.watcher.fileno()]) |
|
738 | closefds([m.server.fileno(), m.repowatcher.fileno()]) | |
737 | os.setsid() |
|
739 | os.setsid() | |
738 |
|
740 | |||
739 | fd = os.open('/dev/null', os.O_RDONLY) |
|
741 | fd = os.open('/dev/null', os.O_RDONLY) |
General Comments 0
You need to be logged in to leave comments.
Login now