changeset 5215:b0bc8cf41ffc

merge with -stable
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Fri, 24 Aug 2007 00:39:16 +0200
parents 316ce5e85b3e (current diff) bddb4ff134c0 (diff)
children 335696e2a58f 551958d5082c
files mercurial/util.py
diffstat 5 files changed, 23 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/httprepo.py
+++ b/mercurial/httprepo.py
@@ -253,7 +253,7 @@ class httprepository(remoterepository):
         if user:
             ui.debug(_('http auth: user %s, password %s\n') %
                      (user, passwd and '*' * len(passwd) or 'not set'))
-            passmgr.add_password(None, host, user, passwd or '')
+            passmgr.add_password(None, self._url, user, passwd or '')
 
         handlers.extend((urllib2.HTTPBasicAuthHandler(passmgr),
                          httpdigestauthhandler(passmgr)))
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -151,6 +151,8 @@ class localrepository(repo.repository):
             except revlog.LookupError:
                 pass
             fp = self.wfile('.hgtags', 'wb')
+            if prevtags:
+                fp.write(prevtags)
 
         # committed tags are stored in UTF-8
         writetag(fp, name, util.fromlocal, prevtags)
--- a/mercurial/sshrepo.py
+++ b/mercurial/sshrepo.py
@@ -175,6 +175,7 @@ class sshrepository(remoterepository):
     def unbundle(self, cg, heads, source):
         d = self.call("unbundle", heads=' '.join(map(hex, heads)))
         if d:
+            # remote may send "unsynced changes"
             self.raise_(hg.RepoError(_("push refused: %s") % d))
 
         while 1:
@@ -188,14 +189,15 @@ class sshrepository(remoterepository):
         self.pipeo.flush()
 
         self.readerr()
-        d = self.pipei.readline()
-        if d != '\n':
-            return 1
-
         l = int(self.pipei.readline())
         r = self.pipei.read(l)
-        if not r:
-            return 1
+        if r:
+            # remote may send "unsynced changes"
+            self.raise_(hg.RepoError(_("push failed: %s") % r))
+
+        self.readerr()
+        l = int(self.pipei.readline())
+        r = self.pipei.read(l)
         return int(r)
 
     def addchangegroup(self, cg, source, url):
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -476,6 +476,15 @@ def _matcher(canonroot, cwd, names, inc,
         try:
             pat = '(?:%s)' % '|'.join([regex(k, p, tail) for (k, p) in pats])
             return re.compile(pat).match
+        except OverflowError:
+            # We're using a Python with a tiny regex engine and we
+            # made it explode, so we'll divide the pattern list in two
+            # until it works
+            l = len(pats)
+            if l < 2:
+                raise
+            a, b = matchfn(pats[:l/2], tail), matchfn(pats[l/2:], tail)
+            return lambda s: a(s) or b(s)
         except re.error:
             for k, p in pats:
                 try:
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -136,8 +136,9 @@ def install_hg():
 
     os.chdir("..") # Get back to hg root
     cmd = ('%s setup.py clean --all'
-           ' install --force --home="%s" --install-lib="%s" >%s 2>&1'
-           % (sys.executable, INST, PYTHONDIR, installerrs))
+           ' install --force --home="%s" --install-lib="%s"'
+           ' --install-scripts="%s" >%s 2>&1'
+           % (sys.executable, INST, PYTHONDIR, BINDIR, installerrs))
     vlog("# Running", cmd)
     if os.system(cmd) == 0:
         if not verbose: