[Pkg-bazaar-commits] ./bzr/unstable r5: .bzrignore support

mbp at sourcefrog.net mbp at sourcefrog.net
Fri Apr 10 07:24:25 UTC 2009


------------------------------------------------------------
revno: 5
committer: mbp at sourcefrog.net
timestamp: Wed 2005-03-09 04:46:15 +0000
message:
  .bzrignore support
  - new WorkingTree.get_file_byname() to read .bzrignore
  - split out WorkingTree.get_ignore_list
modified:
  bzrlib/__init__.py
  bzrlib/tree.py
-------------- next part --------------
=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py	2005-03-09 04:09:57 +0000
+++ b/bzrlib/__init__.py	2005-03-09 04:46:15 +0000
@@ -28,3 +28,6 @@
 DEFAULT_IGNORE = ['.*', '*~', '#*#', '*.tmp', '*.o', '*.a', '*.py[oc]',
                   '{arch}']
 
+IGNORE_FILENAME = ".bzrignore"
+
+

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2005-03-09 04:15:02 +0000
+++ b/bzrlib/tree.py	2005-03-09 04:46:15 +0000
@@ -53,10 +53,6 @@
     trees or versioned trees.
     """
     
-    def get_file(self, file_id):
-        """Return an open file-like object for given file id."""
-        raise NotImplementedError()
-
     def has_filename(self, filename):
         """True if the tree has given filename."""
         raise NotImplementedError()
@@ -149,7 +145,10 @@
         return os.path.exists(self._rel(filename))
 
     def get_file(self, file_id):
-        return file(self._get_store_filename(file_id), 'rb')
+        return self.get_file_byname(self.id2path(file_id))
+
+    def get_file_byname(self, filename):
+        return file(self._rel(filename), 'rb')
 
     def _get_store_filename(self, file_id):
         return self._rel(self.id2path(file_id))
@@ -257,6 +256,15 @@
                 yield fpath
 
 
+    def get_ignore_list(self):
+        """Return list of ignore patterns."""
+        if self.has_filename(bzrlib.IGNORE_FILENAME):
+            f = self.get_file_byname(bzrlib.IGNORE_FILENAME)
+            return [line.rstrip("\n\r") for line in f.readlines()]
+        else:
+            return bzrlib.DEFAULT_IGNORE
+
+
     def is_ignored(self, filename):
         """Check whether the filename matches an ignore pattern.
 
@@ -265,7 +273,7 @@
         ## TODO: Take them from a file, not hardcoded
         ## TODO: Use extended zsh-style globs maybe?
         ## TODO: Use '**' to match directories?
-        for pat in bzrlib.DEFAULT_IGNORE:
+        for pat in self.get_ignore_list():
             if '/' in pat:
                 if fnmatch.fnmatchcase(filename, pat):
                     return True



More information about the Pkg-bazaar-commits mailing list