# HG changeset patch # User Matt Mackall # Date 1170799942 21600 # Node ID 5b1f663ef86d68ce11d70de8e5ab61d93341a18c # Parent 516f883e3d79f2e946a7bd97ed37aa239d2d4bf4# Parent c620376b8fd6a77195f13c3a87d9f1931854fbe0 Merge with stable diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -678,9 +678,10 @@ class queue: while True: seen[n] = 1 pp = chlog.parents(n) - if pp[1] != revlog.nullid and chlog.rev(pp[1]) > revnum: - if pp[1] not in seen: - heads.append(pp[1]) + if pp[1] != revlog.nullid: + for p in pp: + if chlog.rev(p) > revnum and p not in seen: + heads.append(p) if pp[0] == revlog.nullid: break if chlog.rev(pp[0]) < revnum: diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2486,7 +2486,7 @@ def unbundle(ui, repo, fname, **opts): command. """ if os.path.exists(fname): - f = open(fname) + f = open(fname, "rb") else: f = urllib.urlopen(fname) gen = changegroup.readbundle(f, fname) @@ -3069,6 +3069,9 @@ def load_extensions(ui): uisetup = getattr(mod, 'uisetup', None) if uisetup: uisetup(ui) + reposetup = getattr(mod, 'reposetup', None) + if reposetup: + hg.repo_setup_hooks.append(reposetup) cmdtable = getattr(mod, 'cmdtable', {}) overrides = [cmd for cmd in cmdtable if cmd in table] if overrides: @@ -3152,11 +3155,6 @@ def dispatch(args): if not repo: repo = hg.repository(u, path=path) u = repo.ui - for name in external.itervalues(): - mod = sys.modules[name] - if hasattr(mod, 'reposetup'): - mod.reposetup(u, repo) - hg.repo_setup_hooks.append(mod.reposetup) except hg.RepoError: if cmd not in optionalrepo.split(): raise diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -579,7 +579,7 @@ def copyfile(src, dest): shutil.copyfile(src, dest) shutil.copymode(src, dest) except shutil.Error, inst: - raise util.Abort(str(inst)) + raise Abort(str(inst)) def copyfiles(src, dst, hardlink=None): """Copy a directory tree using hardlinks if possible""" diff --git a/mercurial/version.py b/mercurial/version.py --- a/mercurial/version.py +++ b/mercurial/version.py @@ -18,10 +18,13 @@ import util unknown_version = 'unknown' remembered_version = False -def get_version(): +def get_version(doreload=False): """Return version information if available.""" try: - from mercurial.__version__ import version + import mercurial.__version__ + if doreload: + reload(mercurial.__version__) + version = mercurial.__version__.version except ImportError: version = unknown_version return version @@ -40,6 +43,8 @@ def write_version(version): f.write("# This file is auto-generated.\n") f.write("version = %r\n" % version) f.close() + # reload the file we've just written + get_version(True) def remember_version(version=None): """Store version information.""" diff --git a/tests/test-extension b/tests/test-extension new file mode 100755 --- /dev/null +++ b/tests/test-extension @@ -0,0 +1,42 @@ +#!/bin/sh +# Test basic extension support + +cat > foobar.py < file +hg add file +hg commit -m 'add file' + +echo '[extensions]' >> $HGRCPATH +echo "foobar = $abspath" >> $HGRCPATH +hg foo + +cd .. +hg clone a b + +hg bar diff --git a/tests/test-extension.out b/tests/test-extension.out new file mode 100644 --- /dev/null +++ b/tests/test-extension.out @@ -0,0 +1,9 @@ +uisetup called +reposetup called for a +Foo +uisetup called +reposetup called for a +reposetup called for b +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +uisetup called +Bar diff --git a/tests/test-mq b/tests/test-mq --- a/tests/test-mq +++ b/tests/test-mq @@ -246,3 +246,22 @@ hg mv bleh barney hg qrefresh --git cat .hg/patches/bar hg log -vC --template '{rev} {file_copies%filecopy}\n' -r . + +echo '% strip again' +cd .. +hg init strip +cd strip +touch foo +hg add foo +hg ci -m 'add foo' -d '0 0' +echo >> foo +hg ci -m 'change foo 1' -d '0 0' +hg up -C 0 +echo 1 >> foo +hg ci -m 'change foo 2' -d '0 0' +HGMERGE=true hg merge +hg ci -m merge -d '0 0' +hg log +hg strip 1 2>&1 | sed 's/\(saving bundle to \).*/\1/' +hg log + diff --git a/tests/test-mq.out b/tests/test-mq.out --- a/tests/test-mq.out +++ b/tests/test-mq.out @@ -264,3 +264,52 @@ new file mode 100644 @@ -0,0 +1,1 @@ +bar 3 barney (foo) +% strip again +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +merging foo +0 files updated, 1 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +changeset: 3:99615015637b +tag: tip +parent: 2:20cbbe65cff7 +parent: 1:d2871fc282d4 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: merge + +changeset: 2:20cbbe65cff7 +parent: 0:53245c60e682 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: change foo 2 + +changeset: 1:d2871fc282d4 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: change foo 1 + +changeset: 0:53245c60e682 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add foo + +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +saving bundle to +saving bundle to +adding branch +adding changesets +adding manifests +adding file changes +added 1 changesets with 1 changes to 1 files +(run 'hg update' to get a working copy) +changeset: 1:20cbbe65cff7 +tag: tip +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: change foo 2 + +changeset: 0:53245c60e682 +user: test +date: Thu Jan 01 00:00:00 1970 +0000 +summary: add foo +