Allow symlinks in bugdir directories.
authorW. Trevor King <wking@tremily.us>
Tue, 28 Aug 2012 18:48:19 +0000 (14:48 -0400)
committerW. Trevor King <wking@tremily.us>
Tue, 28 Aug 2012 18:48:22 +0000 (14:48 -0400)
This allows you to do things like:

  $ mkdir -p /tmp/joint-repo/.be
  $ cd /tml/joint-repo/.be
  $ ln -s ~/src/be/.be/version
  $ ln -s ~/src/be/.be/bea86499-824e-4e77-b085-2d581fa9ccab/
  $ ln -s ~/src/BEurtle/.be/7017b289-f207-4e39-9746-f58323404eba/
  $ be list

without crashing with a:

  Traceback (most recent call last):
    File ".../libbe/storage/base.py", line 316, in children
      return self._children(*args, **kwargs)
    File ".../libbe/storage/vcs/base.py", line 820, in _children
      path = self.path(id, revision, relpath=False)
    File ".../libbe/storage/vcs/base.py", line 721, in path
      path = self._cached_path_id.path(id)
    File ".../libbe/storage/vcs/base.py", line 280, in path
      raise InvalidID(uuid)
  libbe.storage.base.InvalidID: 7017b289-f207-4e39-9746-f58323404eba in revision None

Currently it only lists the first bug directory it comes across, but
after this patch, it doesn't crash ;).

libbe/storage/vcs/base.py

index 5f13c012821d58b4864f938b71efcc211a402d02..2a5f60033cd2344492426cd5ab3638e3cddd912b 100644 (file)
@@ -219,7 +219,8 @@ class CachedPathID (object):
         else:
             self._cache = cache
         spaced_root = os.path.join(self._root, self._spacer_dirs[0])
-        for dirpath, dirnames, filenames in os.walk(spaced_root):
+        for dirpath, dirnames, filenames in os.walk(spaced_root,
+                                                    followlinks=True):
             if dirpath == spaced_root:
                 continue
             try: