changeset 4894:be5dc5e3ab2d

hg parents: don't pass an OS-specific path to repo.filectx The only reason to use the matcher code instead of calling util.canonpath directly is to be able to use "path:canonical/path/to/file" patterns.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Tue, 17 Jul 2007 09:08:29 -0300
parents 931f901ab811
children fa6c9381d053
files mercurial/commands.py tests/test-parents tests/test-parents.out
diffstat 3 files changed, 39 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1978,7 +1978,10 @@ def parents(ui, repo, file_=None, **opts
     """
     rev = opts.get('rev')
     if file_:
-        ctx = repo.filectx(file_, changeid=rev)
+        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)
     else:
--- a/tests/test-parents
+++ b/tests/test-parents
@@ -1,8 +1,8 @@
 #!/bin/sh
 # test parents command
 
-hg init a
-cd a
+hg init repo
+cd repo
 echo % no working directory
 hg parents
 
@@ -25,3 +25,20 @@ hg parents -r 2
 
 echo % hg parents -r 2 a
 hg parents -r 2 a
+
+echo % hg parents -r 2 ../a
+hg parents -r 2 ../a
+
+echo '% cd dir; hg parents -r 2 ../a'
+mkdir dir
+cd dir
+hg parents -r 2 ../a
+
+echo '% hg parents -r 2 path:a'
+hg parents -r 2 path:a
+
+echo '% hg parents -r 2 glob:a'
+cd ..
+hg parents -r 2 glob:a
+
+true
--- a/tests/test-parents.out
+++ b/tests/test-parents.out
@@ -26,3 +26,19 @@ user:        test
 date:        Thu Jan 01 00:00:00 1970 +0000
 summary:     ab
 
+% hg parents -r 2 ../a
+abort: ../a not under root
+% cd dir; hg parents -r 2 ../a
+changeset:   0:b6a1406d8886
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     ab
+
+% hg parents -r 2 path:a
+changeset:   0:b6a1406d8886
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     ab
+
+% hg parents -r 2 glob:a
+abort: can only specify an explicit file name