--- a/contrib/hgit Tue Jun 14 08:49:52 2005 +0100
+++ b/contrib/hgit Wed Jun 15 08:32:29 2005 +0100
@@ -12,58 +12,58 @@
def difftree(args, repo):
def __difftree(repo, files = None, node1 = None, node2 = None):
- def date(c):
- return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
+ def date(c):
+ return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
- if node2:
- change = repo.changelog.read(node2)
- mmap2 = repo.manifest.read(change[0])
- (c, a, d) = repo.diffrevs(node1, node2)
- def read(f): return repo.file(f).read(mmap2[f])
- date2 = date(change)
- else:
- date2 = time.asctime()
- (c, a, d, u) = repo.diffdir(repo.root, node1)
- if not node1:
- node1 = repo.dirstate.parents()[0]
- def read(f): return file(os.path.join(repo.root, f)).read()
+ if node2:
+ change = repo.changelog.read(node2)
+ mmap2 = repo.manifest.read(change[0])
+ (c, a, d) = repo.diffrevs(node1, node2)
+ def read(f): return repo.file(f).read(mmap2[f])
+ date2 = date(change)
+ else:
+ date2 = time.asctime()
+ (c, a, d, u) = repo.diffdir(repo.root, node1)
+ if not node1:
+ node1 = repo.dirstate.parents()[0]
+ def read(f): return file(os.path.join(repo.root, f)).read()
- change = repo.changelog.read(node1)
- mmap = repo.manifest.read(change[0])
- date1 = date(change)
- empty = "0" * 40;
+ change = repo.changelog.read(node1)
+ mmap = repo.manifest.read(change[0])
+ date1 = date(change)
+ empty = "0" * 40;
- if files:
- c, a, d = map(lambda x: filterfiles(files, x), (c, a, d))
+ if files:
+ c, a, d = map(lambda x: filterfiles(files, x), (c, a, d))
- for f in c:
- # TODO get file permissions
- print ":100664 100664 %s %s %s %s" % (hg.hex(mmap[f]),
- hg.hex(mmap2[f]), f, f)
- for f in a:
- print ":000000 100664 %s %s %s %s" % (empty, hg.hex(mmap2[f]), f, f)
- for f in d:
- print ":100664 000000 %s %s %s %s" % (hg.hex(mmap[f]), empty, f, f)
+ for f in c:
+ # TODO get file permissions
+ print ":100664 100664 %s %s %s %s" % (hg.hex(mmap[f]),
+ hg.hex(mmap2[f]), f, f)
+ for f in a:
+ print ":000000 100664 %s %s %s %s" % (empty, hg.hex(mmap2[f]), f, f)
+ for f in d:
+ print ":100664 000000 %s %s %s %s" % (hg.hex(mmap[f]), empty, f, f)
##
revs = []
if args:
- doptions = {}
- opts = [('p', 'patch', None, 'patch'),
- ('r', 'recursive', None, 'recursive')]
- args = fancyopts.fancyopts(args, opts, doptions,
+ doptions = {}
+ opts = [('p', 'patch', None, 'patch'),
+ ('r', 'recursive', None, 'recursive')]
+ args = fancyopts.fancyopts(args, opts, doptions,
'hg diff-tree [options] sha1 sha1')
if len(args) < 2:
- help()
+ help()
sys.exit(1)
revs.append(repo.lookup(args[0]))
revs.append(repo.lookup(args[1]))
args = args[2:]
if doptions['patch']:
- commands.dodiff(repo, args, *revs)
+ commands.dodiff(repo, args, *revs)
else:
- __difftree(repo, args, *revs)
+ __difftree(repo, args, *revs)
def catcommit(repo, n, prefix):
nlprefix = '\n' + prefix;
@@ -80,15 +80,15 @@
print "%scommitter <%s> %s %s" % (prefix, changes[1], date, date_ar[1])
print prefix
if prefix != "":
- print "%s%s" % (prefix, changes[4].replace('\n', nlprefix).strip())
+ print "%s%s" % (prefix, changes[4].replace('\n', nlprefix).strip())
else:
- print changes[4]
+ print changes[4]
def catfile(args, ui, repo):
doptions = {}
opts = [('s', 'stdin', None, 'stdin')]
args = fancyopts.fancyopts(args, opts, doptions,
- 'hg cat-file type sha1')
+ 'hg cat-file type sha1')
# in stdin mode, every line except the commit is prefixed with two
# spaces. This way the our caller can find the commit without magic
@@ -96,32 +96,32 @@
#
prefix = ""
if doptions['stdin']:
- try:
- (type, r) = raw_input().split(' ');
- prefix = " "
- except EOFError:
- return
+ try:
+ (type, r) = raw_input().split(' ');
+ prefix = " "
+ except EOFError:
+ return
else:
- if len(args) < 2:
- help()
- sys.exit(1)
+ if len(args) < 2:
+ help()
+ sys.exit(1)
type = args[0]
- r = args[1]
+ r = args[1]
while r:
- if type != "commit":
- sys.stderr.write("aborting hg cat-file only understands commits\n")
- sys.exit(1);
- n = repo.changelog.lookup(r)
- catcommit(repo, n, prefix)
- if doptions['stdin']:
- try:
- (type, r) = raw_input().split(' ');
- except EOFError:
- break
- else:
- break
+ if type != "commit":
+ sys.stderr.write("aborting hg cat-file only understands commits\n")
+ sys.exit(1);
+ n = repo.changelog.lookup(r)
+ catcommit(repo, n, prefix)
+ if doptions['stdin']:
+ try:
+ (type, r) = raw_input().split(' ');
+ except EOFError:
+ break
+ else:
+ break
# git rev-tree is a confusing thing. You can supply a number of
# commit sha1s on the command line, and it walks the commit history
@@ -131,14 +131,14 @@
def revtree(args, repo):
# calculate and return the reachability bitmask for sha
def is_reachable(ar, reachable, sha):
- if len(ar) == 0:
- return 1
- mask = 0
- for i in range(len(ar)):
- if sha in reachable[i]:
- mask |= 1 << i
+ if len(ar) == 0:
+ return 1
+ mask = 0
+ for i in range(len(ar)):
+ if sha in reachable[i]:
+ mask |= 1 << i
- return mask
+ return mask
reachable = []
stop_sha1 = []
@@ -148,47 +148,47 @@
# want us to stop on
for i in range(len(args)):
if args[i].count('^'):
- s = args[i].split('^')[1]
- stop_sha1.append(repo.changelog.lookup(s))
- want_sha1.append(s)
- elif args[i] != 'HEAD':
- want_sha1.append(args[i])
+ s = args[i].split('^')[1]
+ stop_sha1.append(repo.changelog.lookup(s))
+ want_sha1.append(s)
+ elif args[i] != 'HEAD':
+ want_sha1.append(args[i])
# calculate the graph for the supplied commits
for i in range(len(want_sha1)):
- reachable.append({});
- n = repo.changelog.lookup(want_sha1[i]);
- visit = [n];
- reachable[i][n] = 1
- while visit:
- n = visit.pop(0)
- if n in stop_sha1:
- break
- for p in repo.changelog.parents(n):
- if p not in reachable[i]:
- reachable[i][p] = 1
- visit.append(p)
- if p in stop_sha1:
- break
+ reachable.append({});
+ n = repo.changelog.lookup(want_sha1[i]);
+ visit = [n];
+ reachable[i][n] = 1
+ while visit:
+ n = visit.pop(0)
+ if n in stop_sha1:
+ break
+ for p in repo.changelog.parents(n):
+ if p not in reachable[i]:
+ reachable[i][p] = 1
+ visit.append(p)
+ if p in stop_sha1:
+ break
# walk the repository looking for commits that are in our
# reachability graph
for i in range(repo.changelog.count()):
- n = repo.changelog.node(i)
- mask = is_reachable(want_sha1, reachable, n)
- if mask:
- changes = repo.changelog.read(n)
- (p1, p2) = repo.changelog.parents(n)
- (h, h1, h2) = map(hg.hex, (n, p1, p2))
- (i1, i2) = map(repo.changelog.rev, (p1, p2))
+ n = repo.changelog.node(i)
+ mask = is_reachable(want_sha1, reachable, n)
+ if mask:
+ changes = repo.changelog.read(n)
+ (p1, p2) = repo.changelog.parents(n)
+ (h, h1, h2) = map(hg.hex, (n, p1, p2))
+ (i1, i2) = map(repo.changelog.rev, (p1, p2))
- date = changes[2].split(' ')[0]
- print "%s %s:%s" % (date, h, mask),
- mask = is_reachable(want_sha1, reachable, p1)
- if i1 != -1 and mask > 0:
- print "%s:%s " % (h1, mask),
- mask = is_reachable(want_sha1, reachable, p2)
- if i2 != -1 and mask > 0:
- print "%s:%s " % (h2, mask),
- print ""
+ date = changes[2].split(' ')[0]
+ print "%s %s:%s" % (date, h, mask),
+ mask = is_reachable(want_sha1, reachable, p1)
+ if i1 != -1 and mask > 0:
+ print "%s:%s " % (h1, mask),
+ mask = is_reachable(want_sha1, reachable, p2)
+ if i2 != -1 and mask > 0:
+ print "%s:%s " % (h2, mask),
+ print ""
# git rev-list tries to order things by date, and has the ability to stop
# at a given commit without walking the whole repo. TODO add the stop
@@ -197,12 +197,12 @@
doptions = {}
opts = [('c', 'commit', None, 'commit')]
args = fancyopts.fancyopts(args, opts, doptions,
- 'hg rev-list')
+ 'hg rev-list')
for i in range(repo.changelog.count()):
- n = repo.changelog.node(i)
- print hg.hex(n)
- if doptions['commit']:
- catcommit(repo, n, ' ')
+ n = repo.changelog.node(i)
+ print hg.hex(n)
+ if doptions['commit']:
+ catcommit(repo, n, ' ')
def catchterm(*args):
raise SignalInterrupt
--- a/mercurial/commands.py Tue Jun 14 08:49:52 2005 +0100
+++ b/mercurial/commands.py Wed Jun 15 08:32:29 2005 +0100
@@ -126,6 +126,18 @@
ui.status("summary: %s\n" % description.splitlines()[0])
ui.status("\n")
+def tags_load(repo):
+ repo.lookup(0) # prime the cache
+ i = repo.tags.items()
+ n = []
+ for e in i:
+ try:
+ l = repo.changelog.rev(e[1])
+ except KeyError:
+ l = -2
+ n.append((l, e))
+ return n
+
def help(ui, cmd=None):
'''show help for a given command or all commands'''
if cmd:
@@ -312,6 +324,26 @@
for i in range(repo.changelog.count() - 1, -1, -1):
show_changeset(ui, repo, rev=i)
+def identify(ui, repo):
+ """print information about the working copy"""
+ (c, a, d, u) = repo.diffdir(repo.root)
+ mflag = (c or a or d or u) and "+" or ""
+ parents = [parent for parent in repo.dirstate.parents()
+ if parent != hg.nullid]
+ if not parents:
+ ui.note("unknown\n")
+ return
+
+ tstring = ''
+ if not ui.quiet:
+ taglist = [e[1] for e in tags_load(repo)]
+ tstring = " %s" % ' + '.join([e[0] for e in taglist
+ if e[0] != 'tip' and e[1] in parents])
+
+ hexfunc = ui.verbose and hg.hex or hg.short
+ pstring = '+'.join([hexfunc(parent) for parent in parents])
+ ui.write("%s%s%s\n" % (pstring, mflag, tstring))
+
def init(ui, source=None):
"""create a new repository or copy an existing one"""
@@ -334,13 +366,20 @@
try:
os.remove(".hg/dirstate")
except: pass
+
+ repo = hg.repository(ui, ".")
+
else:
repo = hg.repository(ui, ".", create=1)
other = hg.repository(ui, source)
cg = repo.getchangegroup(other)
repo.addchangegroup(cg)
else:
- hg.repository(ui, ".", create=1)
+ repo = hg.repository(ui, ".", create=1)
+
+ f = repo.opener("hgrc", "w")
+ f.write("[paths]\n")
+ f.write("default = %s\n" % source)
def log(ui, repo, f):
"""show the revision history of a single file"""
@@ -409,7 +448,7 @@
raise "patch failed!"
repo.commit(files, text)
-def pull(ui, repo, source):
+def pull(ui, repo, source="default"):
"""pull changes from the specified source"""
paths = {}
for name, path in ui.configitems("paths"):
@@ -457,7 +496,7 @@
os.kill(child, signal.SIGTERM)
return r
-def rawcommit(ui, repo, files, **rc):
+def rawcommit(ui, repo, flist, **rc):
"raw commit interface"
text = rc['text']
@@ -468,7 +507,7 @@
print "missing commit text"
return 1
- files = relpath(repo, files)
+ files = relpath(repo, flist)
if rc['files']:
files += open(rc['files']).read().splitlines()
@@ -505,15 +544,7 @@
def tags(ui, repo):
"""list repository tags"""
- repo.lookup(0) # prime the cache
- i = repo.tags.items()
- n = []
- for e in i:
- try:
- l = repo.changelog.rev(e[1])
- except KeyError:
- l = -2
- n.append((l, e))
+ n = tags_load(repo)
n.sort()
n.reverse()
@@ -583,6 +614,7 @@
"heads": (heads, [], 'hg heads'),
"history": (history, [], 'hg history'),
"help": (help, [], 'hg help [command]'),
+ "identify|id": (identify, [], 'hg identify'),
"init": (init, [], 'hg init [url]'),
"log": (log, [], 'hg log <file>'),
"manifest|dumpmanifest": (manifest, [], 'hg manifest [rev]'),
@@ -627,7 +659,7 @@
def find(cmd):
i = None
for e in table.keys():
- if re.match(e + "$", cmd):
+ if re.match("(%s)$" % e, cmd):
return table[e]
raise UnknownCommand(cmd)
--- a/mercurial/hg.py Tue Jun 14 08:49:52 2005 +0100
+++ b/mercurial/hg.py Wed Jun 15 08:32:29 2005 +0100
@@ -338,6 +338,9 @@
if not self.remote:
self.dirstate = dirstate(self.opener, ui, self.root)
+ try:
+ self.ui.readconfig(self.opener("hgrc"))
+ except IOError: pass
def ignore(self, f):
if self.ignorelist is None:
--- a/mercurial/ui.py Tue Jun 14 08:49:52 2005 +0100
+++ b/mercurial/ui.py Wed Jun 15 08:32:29 2005 +0100
@@ -23,6 +23,9 @@
self.debugflag = (self.debugflag or debug)
self.interactive = (self.interactive and interactive)
+ def readconfig(self, fp):
+ self.cdata.readfp(fp)
+
def config(self, section, val, default=None):
if self.cdata.has_option(section, val):
return self.cdata.get(section, val)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/README Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,36 @@
+A simple testing framework
+
+To run the tests, do:
+
+cd tests/
+./run-tests
+
+This finds all scripts in the test directory named test-* and executes
+them. The scripts can be either shell scripts or Python. Each test is
+run in a temporary directory that is removed when the test is complete.
+
+A test-<x> succeeds if the script returns success and its output
+matches test-<x>.out. If the new output doesn't match, it is stored in
+test-<x>.err.
+
+There are some tricky points here that you should be aware of when
+writing tests:
+
+- hg commit and hg up -m want user interaction
+
+ for commit use -t "text"
+ for hg up -m, set HGMERGE to something noninteractive (like true or merge)
+
+- changeset hashes will change based on user and date which make
+ things like hg history output change
+
+ use commit -t "test" -u test -d "0 0"
+
+- diff will show the current time
+
+ use hg diff | sed "s/\(\(---\|+++\).*\)\t.*/\1/" to strip dates
+
+- set -x and pipelines don't generate stable output
+
+ turn off set -x or break pipelines into pieces
+
--- a/tests/manifest-bug Tue Jun 14 08:49:52 2005 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#!/bin/sh -x
-
-set +e
-
-BASE=foo.base
-BR1=foo.br1
-BR2=foo.br2
-BR2_1=foo.br2_1
-
-mkdir $BASE
-cd $BASE
-hg init
-echo test > file
-hg add file
-EDITOR="echo 'initial commit' > " hg commit
-cd ..
-
-mkdir $BR1
-cd $BR1
-hg branch ../$BASE
-hg checkout
-echo test > file1
-hg addremove
-EDITOR="echo side commit >" hg commit
-cd ..
-
-mkdir $BR2
-cd $BR2
-hg branch ../$BASE
-hg checkout
-echo yet more >> file2
-hg addremove
-EDITOR="echo second update >" hg commit
-cd ..
-
-mkdir $BR2_1
-cd $BR2_1
-hg branch ../$BR2
-hg checkout
-EDITOR="echo commit merge >" hg merge ../$BR1
-
-hg checkout
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/run-tests Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+set -e
+
+tests=0
+failed=0
+H=$PWD
+
+for f in `ls test-* | grep -Ev "\.|~"` ; do
+ echo -n "."
+ D=`mktemp -d`
+ if [ "$D" == "" ] ; then
+ echo mktemp failed!
+ fi
+
+ cd $D
+ fail=0
+ if ! $H/$f > .out 2>&1 ; then
+ echo $f failed with error code $?
+ fail=1
+ fi
+ if [ -s .out -a ! -r $H/$f.out ] ; then
+ echo $f generated unexpected output:
+ cat .out
+ cp .out $H/$f.err
+ fail=1
+ elif ! diff -u $H/$f.out .out > /dev/null ; then
+ echo $f output changed:
+ diff -u $H/$f.out .out && true
+ cp .out $H/$f.err
+ fi
+
+ cd $H
+ rm -r $D
+
+ failed=$[$failed + $fail]
+ tests=$[$tests + 1]
+done
+
+echo
+echo Ran $tests tests, $failed failed
+
+if [ $failed -gt 0 ] ; then
+ exit 1
+fi
+
--- a/tests/simple-merge Tue Jun 14 08:49:52 2005 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-set -ex
-export EDITOR=true
-rm -rf test branch
-
-mkdir test
-cd test
-echo foo>foo
-hg init
-hg addremove
-hg commit
-hg verify
-cd ..
-
-cp -a test branch
-cd branch
-echo bar>>foo
-hg commit
-
-cd ../test
-hg merge ../branch
-hg verify
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-basic Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -x
+mkdir t
+cd t
+hg init
+echo a > a
+hg add a
+hg commit -t "test" -u test -d "0 0"
+hg history
+hg manifest
+hg cat a
+hg verify
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-basic.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,22 @@
++ mkdir t
++ cd t
++ hg init
++ echo a
++ hg add a
++ hg commit -t test -u test -d '0 0'
++ hg history
+changeset: 0:acb14030fe0a21b60322c440ad2d20cf7685a376
+user: test
+date: Wed Dec 31 16:00:00 1969
+summary: test
+
++ hg manifest
+b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a
++ hg cat a
+a
++ hg verify
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-help Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -x
+
+hg help
+hg add -h
+hg help diff
+hg help foo
+hg commands
+
+exit 0
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-help.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,78 @@
++ hg help
+hg commands:
+
+ add add the specified files on the next commit
+ addremove add all new files, delete all missing files
+ annotate show changeset information per file line
+ cat output the latest or given revision of a file
+ commit commit the specified files or all outstanding changes
+ diff diff working directory (or selected files)
+ export dump the changeset header and diffs for a revision
+ forget don't add the specified files on the next commit
+ heads show current repository heads
+ help show help for a given command or all commands
+ history show the changelog history
+ init create a new repository or copy an existing one
+ log show the revision history of a single file
+ manifest output the latest or given revision of the project manifest
+ parents show the parents of the current working dir
+ patch import an ordered set of patches
+ pull pull changes from the specified source
+ push push changes to the specified destination
+ rawcommit raw commit interface
+ recover roll back an interrupted transaction
+ remove remove the specified files on the next commit
+ serve export the repository via HTTP
+ status show changed files in the working directory
+ tags list repository tags
+ tip show the tip revision
+ undo undo the last transaction
+ update update or merge working directory
+ verify verify the integrity of the repository
++ hg add -h
+hg add: option -h not recognized
+hg add [files]
+
+add the specified files on the next commit
++ hg help diff
+hg diff [-r A] [-r B] [files]
+
+ -r --rev
+ revision
+
+diff working directory (or selected files)
++ hg help foo
+hg: unknown command foo
++ hg commands
+hg: unknown command 'commands'
+hg commands:
+
+ add add the specified files on the next commit
+ addremove add all new files, delete all missing files
+ annotate show changeset information per file line
+ cat output the latest or given revision of a file
+ commit commit the specified files or all outstanding changes
+ diff diff working directory (or selected files)
+ export dump the changeset header and diffs for a revision
+ forget don't add the specified files on the next commit
+ heads show current repository heads
+ help show help for a given command or all commands
+ history show the changelog history
+ init create a new repository or copy an existing one
+ log show the revision history of a single file
+ manifest output the latest or given revision of the project manifest
+ parents show the parents of the current working dir
+ patch import an ordered set of patches
+ pull pull changes from the specified source
+ push push changes to the specified destination
+ rawcommit raw commit interface
+ recover roll back an interrupted transaction
+ remove remove the specified files on the next commit
+ serve export the repository via HTTP
+ status show changed files in the working directory
+ tags list repository tags
+ tip show the tip revision
+ undo undo the last transaction
+ update update or merge working directory
+ verify verify the integrity of the repository
++ exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -e
+
+mkdir test
+cd test
+echo foo>foo
+hg init
+hg addremove
+hg commit -t "1"
+hg verify
+hg serve 2>/dev/null &
+C=$!
+cd ..
+
+mkdir copy
+cd copy
+hg init http://localhost:8000/
+hg verify
+hg co
+cat foo
+hg manifest
+
+kill $C
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,18 @@
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions
+requesting all changes
+adding changesets
+adding manifests
+adding file revisions
+modified 1 files, added 1 changesets and 1 new revisions
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions
+foo
+2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo
+killed!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-simple-update Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -ex
+
+mkdir test
+cd test
+echo foo>foo
+hg init
+hg addremove
+hg commit -t "1"
+hg verify
+cd ..
+
+mkdir branch
+cd branch
+hg init ../test
+hg co
+echo bar>>foo
+hg commit -t "2"
+
+cd ../test
+hg pull ../branch
+hg verify
+hg co
+cat foo
+hg manifest
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-simple-update.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,38 @@
++ mkdir test
++ cd test
++ echo foo
++ hg init
++ hg addremove
++ hg commit -t 1
++ hg verify
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions
++ cd ..
++ mkdir branch
++ cd branch
++ hg init ../test
++ hg co
++ echo bar
++ hg commit -t 2
++ cd ../test
++ hg pull ../branch
+searching for changes
+adding changesets
+adding manifests
+adding file revisions
+modified 1 files, added 1 changesets and 1 new revisions
++ hg verify
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 2 changesets, 2 total revisions
++ hg co
++ cat foo
+foo
+bar
++ hg manifest
+6f4310b00b9a147241b071a60c28a650827fb03d 644 foo
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-undo Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -x
+mkdir t
+cd t
+hg init
+echo a > a
+hg add a
+hg commit -t "test" -u test -d "0 0"
+hg verify
+hg parents
+hg status
+hg undo
+hg verify
+hg parents
+hg status
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-undo.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,30 @@
++ mkdir t
++ cd t
++ hg init
++ echo a
++ hg add a
++ hg commit -t test -u test -d '0 0'
++ hg verify
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions
++ hg parents
+changeset: 0:acb14030fe0a21b60322c440ad2d20cf7685a376
+user: test
+date: Wed Dec 31 16:00:00 1969
+summary: test
+
++ hg status
++ hg undo
+attempting to rollback last transaction
++ hg verify
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+0 files, 0 changesets, 0 total revisions
++ hg parents
++ hg status
+A a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-up-local-change Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+export HGMERGE=true
+
+set -ex
+mkdir r1
+cd r1
+hg init
+echo a > a
+hg addremove
+hg commit -t "1" -u test -d "0 0"
+
+cd ..
+mkdir r2
+cd r2
+hg init ../r1
+hg up
+echo abc > a
+hg diff > ../d
+sed "s/\(\(---\|+++\).*\)\t.*/\1/" < ../d
+
+cd ../r1
+echo b > b
+echo a2 > a
+hg addremove
+hg commit -t "2" -u test -d "0 0"
+
+cd ../r2
+hg -q pull ../r1
+hg status
+hg -d up
+hg -d up -m
+hg parents
+hg -v history
+hg diff > ../d
+sed "s/\(\(---\|+++\).*\)\t.*/\1/" < ../d
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-up-local-change.out Wed Jun 15 08:32:29 2005 +0100
@@ -0,0 +1,70 @@
++ mkdir r1
++ cd r1
++ hg init
++ echo a
++ hg addremove
++ hg commit -t 1 -u test -d '0 0'
++ cd ..
++ mkdir r2
++ cd r2
++ hg init ../r1
++ hg up
++ echo abc
++ hg diff
++ sed 's/\(\(---\|+++\).*\)\t.*/\1/'
+--- a/a
++++ b/a
+@@ -1,1 +1,1 @@
+-a
++abc
++ cd ../r1
++ echo b
++ echo a2
++ hg addremove
++ hg commit -t 2 -u test -d '0 0'
++ cd ../r2
++ hg -q pull ../r1
++ hg status
+C a
++ hg -d up
+resolving manifests
+ ancestor a0c8bcbb local a0c8bcbb remote 1165e8bd
+ a versions differ, resolve
+remote created b
+getting b
+merging a
+resolving a
+file a: other d730145a ancestor b789fdd9
++ hg -d up -m
+resolving manifests
+ ancestor 1165e8bd local 1165e8bd remote 1165e8bd
++ hg parents
+changeset: 1:1e71731e6fbb5b35fae293120dea6964371c13c6
+user: test
+date: Wed Dec 31 16:00:00 1969
+summary: 2
+
++ hg -v history
+changeset: 1:1e71731e6fbb5b35fae293120dea6964371c13c6
+manifest: 1:1165e8bd193e17ad7d321d846fcf27ff3f412758
+user: test
+date: Wed Dec 31 16:00:00 1969
+files: a b
+description:
+2
+
+changeset: 0:c19d34741b0a4ced8e4ba74bb834597d5193851e
+manifest: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
+user: test
+date: Wed Dec 31 16:00:00 1969
+files: a
+description:
+1
+
++ hg diff
++ sed 's/\(\(---\|+++\).*\)\t.*/\1/'
+--- a/a
++++ b/a
+@@ -1,1 +1,1 @@
+-a2
++abc