[Erp5-report] r6798 - /erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Apr 19 13:23:07 CEST 2006
Author: chris
Date: Wed Apr 19 13:23:05 2006
New Revision: 6798
URL: http://svn.erp5.org?rev=6798&view=rev
Log:
- fixed bug in svn add/del (order is important and wasn't taken into consideration)
Modified:
erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py
Modified: erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py?rev=6798&r1=6797&r2=6798&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py (original)
+++ erp5/trunk/products/ERP5Subversion/Tool/SubversionTool.py Wed Apr 19 13:23:05 2006
@@ -43,6 +43,7 @@
from cStringIO import StringIO
from tempfile import mktemp
from shutil import copy
+from zLOG import LOG
try:
from base64 import b64encode, b64decode
@@ -757,8 +758,8 @@
# Clean up
removeAll(path)
- # return a set with dirs & files present in the directory
- def getSetForDir(self, directory):
+ # return a set with directories present in the directory
+ def getSetDirsForDir(self, directory):
dir_set = set()
for root, dirs, files in os.walk(directory):
# don't visit SVN directories
@@ -768,41 +769,65 @@
for name in dirs:
f = os.path.join(root, name)
dir_set.add(f.replace(directory,''))
+ return dir_set
+
+ # return a set with files present in the directory
+ def getSetFilesForDir(self, directory):
+ dir_set = set()
+ for root, dirs, files in os.walk(directory):
+ # don't visit SVN directories
+ if '.svn' in dirs:
+ dirs.remove('.svn')
# get Files
for name in files:
f = os.path.join(root, name)
dir_set.add(f.replace(directory,''))
return dir_set
- # return files/dirs present in new_dir but not in old_dir
+ # return files present in new_dir but not in old_dir
# return a set of relative paths
def getNewFiles(self, old_dir, new_dir):
if old_dir[-1] != os.sep:
old_dir += os.sep
if new_dir[-1] != os.sep:
new_dir += os.sep
- old_set = self.getSetForDir(old_dir)
- new_set = self.getSetForDir(new_dir)
+ old_set = self.getSetFilesForDir(old_dir)
+ new_set = self.getSetFilesForDir(new_dir)
return new_set.difference(old_set)
+ # return dirs present in new_dir but not in old_dir
+ # return a set of relative paths
+ def getNewDirs(self, old_dir, new_dir):
+ if old_dir[-1] != os.sep:
+ old_dir += os.sep
+ if new_dir[-1] != os.sep:
+ new_dir += os.sep
+ old_set = self.getSetDirsForDir(old_dir)
+ new_set = self.getSetDirsForDir(new_dir)
+ return new_set.difference(old_set)
+
# svn del files that have been removed in new dir
def deleteOldFiles(self, old_dir, new_dir, bt):
# detect removed files
files_set = self.getNewFiles(new_dir, old_dir)
+ # detect removed directories
+ dirs_set = self.getNewDirs(new_dir, old_dir)
# svn del
- for file in files_set:
- self.remove(os.path.join(old_dir, file))
+ self.remove([os.path.join(old_dir, x) for x in files_set])
+ self.remove([os.path.join(old_dir, x) for x in dirs_set])
# copy files and add new files
def addNewFiles(self, old_dir, new_dir, bt):
# detect created files
files_set = self.getNewFiles(old_dir, new_dir)
+ # detect created directories
+ dirs_set = self.getNewDirs(old_dir, new_dir)
# Copy files
#os.system('cp -af %s/* %s'%(new_dir, old_dir))
copytree(new_dir, old_dir)
# svn add
- for file in files_set:
- self.add(os.path.join(old_dir, file))
+ self.add([os.path.join(old_dir, x) for x in dirs_set])
+ self.add([os.path.join(old_dir, x) for x in files_set])
def treeToXML(self, item) :
output = "<?xml version='1.0' encoding='iso-8859-1'?>"+ os.linesep
More information about the Erp5-report
mailing list