--- a/mercurial/commands.py Tue Sep 11 13:24:52 2007 -0700
+++ b/mercurial/commands.py Tue Sep 11 23:38:29 2007 +0200
@@ -1976,16 +1976,30 @@
revision or the argument to --rev if given) is printed.
"""
rev = opts.get('rev')
+ if rev:
+ ctx = repo.changectx(rev)
+ else:
+ ctx = repo.workingctx()
+
if file_:
files, match, anypats = cmdutil.matchpats(repo, (file_,), opts)
if anypats or len(files) != 1:
raise util.Abort(_('can only specify an explicit file name'))
- ctx = repo.filectx(files[0], changeid=rev)
- elif rev:
- ctx = repo.changectx(rev)
+ file_ = files[0]
+ filenodes = []
+ for cp in ctx.parents():
+ if not cp:
+ continue
+ try:
+ filenodes.append(cp.filenode(file_))
+ except revlog.LookupError:
+ pass
+ if not filenodes:
+ raise util.Abort(_("'%s' not found in manifest!") % file_)
+ fl = repo.file(file_)
+ p = [repo.lookup(fl.linkrev(fn)) for fn in filenodes]
else:
- ctx = repo.workingctx()
- p = [cp.node() for cp in ctx.parents()]
+ p = [cp.node() for cp in ctx.parents()]
displayer = cmdutil.show_changeset(ui, repo, opts)
for n in p:
--- a/tests/test-parents Tue Sep 11 13:24:52 2007 -0700
+++ b/tests/test-parents Tue Sep 11 23:38:29 2007 +0200
@@ -13,6 +13,12 @@
hg ci -Ama -d '1 0'
echo b >> b
hg ci -Amb -d '2 0'
+echo c > c
+hg ci -Amc -d '3 0'
+hg up -C 1
+echo d > c
+hg ci -Amc2 -d '4 0'
+hg up -C 3
echo % hg parents
hg parents
@@ -20,6 +26,12 @@
echo % hg parents a
hg parents a
+echo % hg parents c, single revision
+hg parents c
+
+echo % hg parents -r 3 c
+hg parents -r 3 c
+
echo % hg parents -r 2
hg parents -r 2
@@ -41,4 +53,15 @@
cd ..
hg parents -r 2 glob:a
+echo % merge working dir with 2 parents, hg parents c
+HGMERGE=true hg merge
+hg parents c
+
+echo % merge working dir with 1 parent, hg parents
+hg up -C 2
+HGMERGE=true hg merge -r 4
+hg parents
+echo % merge working dir with 1 parent, hg parents c
+hg parents c
+
true
--- a/tests/test-parents.out Tue Sep 11 13:24:52 2007 -0700
+++ b/tests/test-parents.out Tue Sep 11 23:38:29 2007 +0200
@@ -1,19 +1,30 @@
% no working directory
adding a
adding b
+adding c
+1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+adding c
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% hg parents
-changeset: 2:6cfac479f009
-tag: tip
+changeset: 3:02d851b7e549
user: test
-date: Thu Jan 01 00:00:02 1970 +0000
-summary: b
+date: Thu Jan 01 00:00:03 1970 +0000
+summary: c
% hg parents a
-changeset: 0:b6a1406d8886
+changeset: 1:d786049f033a
user: test
-date: Thu Jan 01 00:00:00 1970 +0000
-summary: ab
+date: Thu Jan 01 00:00:01 1970 +0000
+summary: a
+% hg parents c, single revision
+changeset: 3:02d851b7e549
+user: test
+date: Thu Jan 01 00:00:03 1970 +0000
+summary: c
+
+% hg parents -r 3 c
+abort: 'c' not found in manifest!
% hg parents -r 2
changeset: 1:d786049f033a
user: test
@@ -21,24 +32,64 @@
summary: a
% hg parents -r 2 a
-changeset: 0:b6a1406d8886
+changeset: 1:d786049f033a
user: test
-date: Thu Jan 01 00:00:00 1970 +0000
-summary: ab
+date: Thu Jan 01 00:00:01 1970 +0000
+summary: a
% hg parents -r 2 ../a
abort: ../a not under root
% cd dir; hg parents -r 2 ../a
-changeset: 0:b6a1406d8886
+changeset: 1:d786049f033a
user: test
-date: Thu Jan 01 00:00:00 1970 +0000
-summary: ab
+date: Thu Jan 01 00:00:01 1970 +0000
+summary: a
% hg parents -r 2 path:a
-changeset: 0:b6a1406d8886
+changeset: 1:d786049f033a
user: test
-date: Thu Jan 01 00:00:00 1970 +0000
-summary: ab
+date: Thu Jan 01 00:00:01 1970 +0000
+summary: a
% hg parents -r 2 glob:a
abort: can only specify an explicit file name
+% merge working dir with 2 parents, hg parents c
+merging c
+0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+changeset: 3:02d851b7e549
+user: test
+date: Thu Jan 01 00:00:03 1970 +0000
+summary: c
+
+changeset: 4:48cee28d4b4e
+tag: tip
+parent: 1:d786049f033a
+user: test
+date: Thu Jan 01 00:00:04 1970 +0000
+summary: c2
+
+% merge working dir with 1 parent, hg parents
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+changeset: 2:6cfac479f009
+user: test
+date: Thu Jan 01 00:00:02 1970 +0000
+summary: b
+
+changeset: 4:48cee28d4b4e
+tag: tip
+parent: 1:d786049f033a
+user: test
+date: Thu Jan 01 00:00:04 1970 +0000
+summary: c2
+
+% merge working dir with 1 parent, hg parents c
+changeset: 4:48cee28d4b4e
+tag: tip
+parent: 1:d786049f033a
+user: test
+date: Thu Jan 01 00:00:04 1970 +0000
+summary: c2
+