Make libbe.storage.vcs.darcs.Darcs._vcs_listdir() more robust.
authorW. Trevor King <wking@drexel.edu>
Mon, 6 Dec 2010 15:43:49 +0000 (10:43 -0500)
committerW. Trevor King <wking@drexel.edu>
Mon, 6 Dec 2010 15:43:49 +0000 (10:43 -0500)
The old version returned [] (for Darcs 2.5) on
  darcs show files --no-files --patch 'Initial commit' .be
(called in `be diff` for `test_usage.sh darcs`), because darcs
returned the paths prefixed with './' (e.g. `./.be`, not `.be`).  By
calculating relative paths and using the relative paths to determine
which files belong to the directory, we can handle both prefixed and
plain paths.

libbe/storage/vcs/darcs.py

index 7ff45544adc6a960711835e341a4e8857ff67fed..29b25eb9b6890321dc6a63a189158dc7b22446ea 100644 (file)
@@ -229,8 +229,9 @@ class Darcs(base.VCS):
                 descendents = [self._u_rel_path(f, path) for f in files
                                if f != '.']
             else:
-                descendents = [self._u_rel_path(f, path) for f in files
-                               if f.startswith(path)]
+                rel_files = [self._u_rel_path(f, path) for f in files]
+                descendents = [f for f in rel_files
+                               if f != '.' and not f.startswith('..')]
             return [f for f in descendents if f.count(os.path.sep) == 0]
         # Darcs versions <= 2.3.1 lack the --patch option for 'show files'
         raise NotImplementedError