# HG changeset patch # User Patrick Mezard # Date 1189546709 -7200 # Node ID 81575b7b505e49dcb5744fc857286c0de3a36dbc # Parent ec061aaa25a44a3719c226ef4ae98ff96b80b87a# Parent 5a4824f6665c86fab5feea7674af78e017594c92 Merge with crew-stable diff -r ec061aaa25a4 -r 81575b7b505e mercurial/commands.py --- 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: diff -r ec061aaa25a4 -r 81575b7b505e tests/test-parents --- 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 diff -r ec061aaa25a4 -r 81575b7b505e tests/test-parents.out --- 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 +