Mercurial > hg
view hgext/inotify/common.py @ 12765:5eed9ceebd64
merge: when --tool is specified, disable HGMERGE by setting to empty string
HGMERGE has different semantics than ui.merge. HGMERGE should hold the name
on an executable in your path, or an absolute tool path. As such, it's not
safe to simply copy the user's specified --tool value into HGMERGE. Instead,
we disable HGMERGE by setting it to an empty string.
author | Steve Borho <steve@borho.org> |
---|---|
date | Mon, 18 Oct 2010 23:20:14 -0500 |
parents | 25e572394f5c |
children |
line wrap: on
line source
# server.py - inotify common protocol code # # Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com> # Copyright 2007, 2008 Brendan Cully <brendan@kublai.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. import cStringIO, socket, struct """ Protocol between inotify clients and server: Client sending query: 1) send protocol version number 2) send query type (string, 4 letters long) 3) send query parameters: - For STAT, N+1 \0-separated strings: 1) N different names that need checking 2) 1 string containing all the status types to match - No parameter needed for DBUG Server sending query answer: 1) send protocol version number 2) send query type 3) send struct.pack'ed headers describing the length of the content: e.g. for STAT, receive 9 integers describing the length of the 9 \0-separated string lists to be read: * one file list for each lmar!?ic status type * one list containing the directories visited during lookup """ version = 3 resphdrfmts = { 'STAT': '>lllllllll', # status requests 'DBUG': '>l' # debugging queries } resphdrsizes = dict((k, struct.calcsize(v)) for k, v in resphdrfmts.iteritems()) def recvcs(sock): cs = cStringIO.StringIO() s = True try: while s: s = sock.recv(65536) cs.write(s) finally: sock.shutdown(socket.SHUT_RD) cs.seek(0) return cs