]> arthur.barton.de Git - bup.git/commitdiff
Excludes BUP_DIR from index.
authorZoran Zaric <zz@zoranzaric.de>
Tue, 16 Nov 2010 09:12:54 +0000 (10:12 +0100)
committerAvery Pennarun <apenwarr@gmail.com>
Wed, 1 Dec 2010 09:42:23 +0000 (01:42 -0800)
Signed-off-by: Zoran Zaric <zz@zoranzaric.de>
cmd/index-cmd.py
lib/bup/drecurse.py

index 47dbd22bc5d57e5bd08aecc9c44f4b87e41c4e43..a8d1a9a349450f4098ec72fc18a4edb264176957 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-import sys, stat, time
+import sys, stat, time, os
 from bup import options, git, index, drecurse
 from bup.helpers import *
 
@@ -66,7 +66,9 @@ def update_index(top):
             return (0100644, index.FAKE_SHA)
 
     total = 0
-    for (path,pst) in drecurse.recursive_dirlist([top], xdev=opt.xdev):
+    bup_dir = os.path.abspath(git.repo())
+    for (path,pst) in drecurse.recursive_dirlist([top], xdev=opt.xdev,
+                                                 bup_dir=bup_dir):
         if opt.verbose>=2 or (opt.verbose==1 and stat.S_ISDIR(pst.st_mode)):
             sys.stdout.write('%s\n' % path)
             sys.stdout.flush()
index ac0115e9f1685c965fad86bf883e44a045a72383..d4c4d4cf00131a9b6d66988028374dad953aa9b8 100644 (file)
@@ -1,4 +1,4 @@
-import stat
+import stat, os
 from bup.helpers import *
 
 try:
@@ -45,24 +45,29 @@ def _dirlist():
     return l
 
 
-def _recursive_dirlist(prepend, xdev):
+def _recursive_dirlist(prepend, xdev, bup_dir=None):
     for (name,pst) in _dirlist():
         if name.endswith('/'):
             if xdev != None and pst.st_dev != xdev:
                 log('Skipping %r: different filesystem.\n' % (prepend+name))
                 continue
+            if bup_dir != None:
+                if os.path.normpath(prepend+name) == bup_dir:
+                    log('Skipping BUP_DIR.\n')
+                    continue
             try:
                 OsFile(name).fchdir()
             except OSError, e:
                 add_error('%s: %s' % (prepend, e))
             else:
-                for i in _recursive_dirlist(prepend=prepend+name, xdev=xdev):
+                for i in _recursive_dirlist(prepend=prepend+name, xdev=xdev,
+                                            bup_dir=bup_dir):
                     yield i
                 os.chdir('..')
         yield (prepend + name, pst)
 
 
-def recursive_dirlist(paths, xdev):
+def recursive_dirlist(paths, xdev, bup_dir=None):
     startdir = OsFile('.')
     try:
         assert(type(paths) != type(''))
@@ -88,7 +93,8 @@ def recursive_dirlist(paths, xdev):
             if stat.S_ISDIR(pst.st_mode):
                 pfile.fchdir()
                 prepend = os.path.join(path, '')
-                for i in _recursive_dirlist(prepend=prepend, xdev=xdev):
+                for i in _recursive_dirlist(prepend=prepend, xdev=xdev,
+                                            bup_dir=bup_dir):
                     yield i
                 startdir.fchdir()
             else: