def listbookmarks(): """List local and remote bookmarks""" local = sh.hg("log", "-r", sh.hg("bookmarks", "-T", "{node}"), "-T{desc}") remote = sh.hg( "log", "-r", sh.hg("bookmarks", "--remote", "-T", "{node}"), "-T{desc}" ) return [local, remote]
from __future__ import absolute_import from testutil.dott import feature, sh, testtmp # noqa: F401 feature.require(["py2"]) sh % "hg init repo" sh % "cd repo" sh % "touch foo" sh % "hg add foo" for i in range(12): open("foo", "ab").write("foo-%s\n" % i) sh.hg("ci", "-m", "foo-%s" % i) sh % "hg export -v -o 'foo-%nof%N.patch' 2:tip" == r""" exporting patches: foo-01of10.patch foo-02of10.patch foo-03of10.patch foo-04of10.patch foo-05of10.patch foo-06of10.patch foo-07of10.patch foo-08of10.patch foo-09of10.patch foo-10of10.patch""" sh % "hg export -v -o 'foo-%%%H.patch' 2:tip" == r""" exporting patches:
# Unshelve should work on an ancestor of the original commit sh % "hg shelve" == r""" shelved as default 0 files updated, 0 files merged, 1 files removed, 0 files unresolved""" sh % "hg up 0" == "0 files updated, 0 files merged, 1 files removed, 0 files unresolved" sh % "hg unshelve" == r''' unshelving change 'default' rebasing shelved changes rebasing 325b64d70042 "shelve changes to: b"''' sh % "hg status" == "A d" # Test bug 4073 we need to enable obsolete markers for it sh % "hg shelve" == r""" shelved as default 0 files updated, 0 files merged, 1 files removed, 0 files unresolved""" arg = sh.hg("--debug", "id", "-i", "-r", "1") sh % ("hg debugobsolete %s" % arg) == "" sh % "hg unshelve" == "unshelving change 'default'" # Unshelve should leave unknown files alone (issue4113) sh % "echo e" > "e" sh % "hg shelve" == r""" shelved as default 0 files updated, 0 files merged, 1 files removed, 0 files unresolved""" sh % "hg status" == "? e" sh % "hg unshelve" == "unshelving change 'default'" sh % "hg status" == r""" A d ? e""" sh % "cat e" == "e"
sh % "setconfig format.use-zstore-commit-data=on" sh % 'hg log -r "$H" -T "{desc}\\n"' == "H" # Test the revlog-fallback mode migrates draft commits. sh.setconfig("format.use-zstore-commit-data=off") sh % "newrepo" sh % "drawdag" << r""" B | A """ == "" # Make A public. sh.hg("debugremotebookmark", "master", "desc(A)") sh % "hg log -r 'public()' -T '{desc} '" == "A" sh % "hg log -r 'draft()' -T '{desc} '" == "B" # Migrate. sh.setconfig( "format.use-zstore-commit-data=on", "format.use-zstore-commit-data-revlog-fallback=on", ) sh % "hg log -r 'desc(A)' -T '{desc}'" == "A" sh % "hg log -r 'desc(B)' -T '{desc}'" == "B" # Break revlog. sh % "mv .hg/store/00changelog.d .hg/store/00changelog.d.bak"
sh % "hg absorb -a" == r""" abort: no changeset to change [255]""" sh % "hg revert -q -C m1 m2" # Use a new repo: sh % "newrepo" # Make some commits to multiple files: for f in ["a", "b"]: for i in [1, 2]: line = "%s line %s\n" % (f, i) open(f, "ab").write(line.encode("utf-8")) sh.hg("commit", "-A", f, "-m", "commit %s %s" % (f, i), "-q") # Use pattern to select files to be fixed up: sh % "sedi s/line/Line/ a b" sh % "hg status" == r""" M a M b""" sh % "hg absorb -a a" == r""" showing changes for a @@ -0,2 +0,2 @@ 6905bbb -a line 1 4472dd5 -a line 2 6905bbb +a Line 1 4472dd5 +a Line 2
def mkcommit(name): open(name, "wb").write(b"%s\n" % name.encode("utf8")) sh.hg("ci", "-m", "add %s" % name, "-A", name)
from edenscm.mercurial.extensions import wrappedfunction from testutil.dott import feature, sh, testtmp # noqa: F401 # Setup repo sh.newrepo() now = int(time.time()) sh % "touch file1" sh % "hg add file1" for delta in [31536000, 86401, 86369, 3800, 420, 5]: committime = now - delta open("file1", "w").write("%s\n" % delta) sh.hg("commit", "-d", "%s 0" % committime, "-m", "Changeset %s seconds ago" % delta) with wrappedfunction(time, "time", lambda orig: now + 1): # Check age ranges sh % "hg log -T '{rev} {desc}\\n' -r 'age(\"<30\")'" == "5 Changeset 5 seconds ago" sh % "hg log -T '{rev} {desc}\\n' -r 'age(\"<7m30s\")'" == r""" 4 Changeset 420 seconds ago 5 Changeset 5 seconds ago""" sh % "hg log -T '{rev} {desc}\\n' -r 'age(\"<1h4m\")'" == r""" 3 Changeset 3800 seconds ago 4 Changeset 420 seconds ago 5 Changeset 5 seconds ago""" sh % "hg log -T '{rev} {desc}\\n' -r 'age(\"<1d\")'" == r""" 2 Changeset 86369 seconds ago 3 Changeset 3800 seconds ago 4 Changeset 420 seconds ago
def setbookmarks(name): """Set bookmarks to specified commit""" sh.hg("bookmark", "book", "-r", "desc(%s)" % name) sh.hg("debugremotebookmark", "remotebook", "desc(%s)" % name)
) sh.newrepo() sh.enable("remotenames", "amend") ( sh % "hg debugdrawdag" << r""" C | B | A """ ) sh.hg("update", "desc(A)") sh.hg("bookmark", "foo") sh.hg("update", "desc(C)") sh.hg("bookmark", "foo") ( sh % "hg debugdrawdag" << r""" E | D | desc(B) """ )
def getidtopath(): """Return a dict mapping from id (in hex form) to path""" output = sh.hg("debugmanifestdirs", "-rall()") # debugmanifestdirs prints "<id> <path>" per line result = dict(l.split() for l in output.splitlines()) return result
def mkcommit(name): open(name, "wb").write("%s\n" % name) sh.hg("ci", "-m", "add %s" % name, "-A", name)