hg
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
Tue, 21 Oct 2008 17:00:35 +0200
changeset 7233 9f0e52e1df77
parent 5531 a3fe91b4f6eb
child 7672 523c7816c33a
permissions -rwxr-xr-x
fix pull racing with push/commit (issue1320) changegroup() has a problem when nodes which does not descend from a node in <bases> are added to remote after the discovery phase. If that happens, changegroup() won't send the correct set of nodes, ie. some nodes will be missing. To correct it we have to find the set of nodes that both remote and self have (called <common>), and send all the nodes not in <common>. This fix has some overhead, in the worst case it will re-send a whole branch. A proper fix to avoid this overhead might be to change the protocol so that the <common> nodes are sent (instead of the <bases> of the missing nodes).

#!/usr/bin/env python
#
# mercurial - scalable distributed SCM
#
# Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.

# enable importing on demand to reduce startup time
from mercurial import demandimport; demandimport.enable()

import sys
import mercurial.util
import mercurial.dispatch

for fp in (sys.stdin, sys.stdout, sys.stderr):
    mercurial.util.set_binary(fp)

mercurial.dispatch.run()