[Python-checkins] r51899 - sandbox/trunk/setuptools/setuptools/command/egg_info.py sandbox/trunk/setuptools/setuptools/command/sdist.py

phillip.eby python-checkins at python.org
Sun Sep 17 18:18:55 CEST 2006


Author: phillip.eby
Date: Sun Sep 17 18:18:54 2006
New Revision: 51899
Modified:
 sandbox/trunk/setuptools/setuptools/command/egg_info.py
 sandbox/trunk/setuptools/setuptools/command/sdist.py
Log:
Support svn 1.4 working copy format
Modified: sandbox/trunk/setuptools/setuptools/command/egg_info.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/command/egg_info.py	(original)
+++ sandbox/trunk/setuptools/setuptools/command/egg_info.py	Sun Sep 17 18:18:54 2006
@@ -181,10 +181,33 @@
 import time; version += time.strftime("-%Y%m%d")
 return version
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 def get_svn_revision(self):
 revision = 0
 urlre = re.compile('url="([^"]+)"')
 revre = re.compile('committed-rev="(\d+)"')
+
 for base,dirs,files in os.walk(os.curdir):
 if '.svn' not in dirs:
 dirs[:] = []
@@ -193,16 +216,34 @@
 f = open(os.path.join(base,'.svn','entries'))
 data = f.read()
 f.close()
- dirurl = urlre.search(data).group(1) # get repository URL
+
+ if data.startswith('8'):
+ data = map(str.splitlines,data.split('\n\x0c\n'))
+ del data[0][0] # get rid of the '8'
+ dirurl = data[0][3]
+ localrev = max([int(d[9]) for d in data if len(d)>9])
+ elif data.startswith('<?xml'):
+ dirurl = urlre.search(data).group(1) # get repository URL
+ localrev = max([int(m.group(1)) for m in revre.finditer(data)])
+ else:
+ from warnings import warn
+ warn("unrecognized .svn/entries format; skipping "+base)
+ dirs[:] = []
+ continue
 if base==os.curdir:
 base_url = dirurl+'/' # save the root url
 elif not dirurl.startswith(base_url):
 dirs[:] = []
 continue # not part of the same svn tree, skip it
- for match in revre.finditer(data):
- revision = max(revision, int(match.group(1)))
+ revision = max(revision, localrev)
+
 return str(revision or get_pkg_info_revision())
 
+
+
+
+
+
 def find_sources(self):
 """Generate SOURCES.txt manifest file"""
 manifest_filename = os.path.join(self.egg_info,"SOURCES.txt")
Modified: sandbox/trunk/setuptools/setuptools/command/sdist.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/command/sdist.py	(original)
+++ sandbox/trunk/setuptools/setuptools/command/sdist.py	Sun Sep 17 18:18:54 2006
@@ -80,16 +80,31 @@
 yield joinpath(dirname, parts[0])
 
 
+entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I)
+
+def entries_finder(dirname, filename):
+ f = open(filename,'rU')
+ data = f.read()
+ f.close()
+ if data.startswith('8'): # subversion 1.4
+ for record in map(str.splitlines, data.split('\n\x0c\n')[1:]):
+ if not record or len(record)>=6 and record[5]=="delete":
+ continue # skip deleted
+ yield joinpath(dirname, record[0])
+ elif data.startswith('<?xml'):
+ for match in entries_pattern.finditer(data):
+ yield joinpath(dirname,unescape(match.group(1)))
+ else:
+ from warnings import warn
+ warn("unrecognized .svn/entries format in "+dirname)
+
+
 finders = [
 (convert_path('CVS/Entries'),
 re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
- (convert_path('.svn/entries'),
- re_finder(
- re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I),
- unescape
- )
- ),
+ (convert_path('.svn/entries'), entries_finder),
 (convert_path('.svn/dir-props'), externals_finder),
+ (convert_path('.svn/dir-prop-base'), externals_finder), # svn 1.4
 ]
 
 
@@ -106,21 +121,6 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 class sdist(_sdist):
 """Smart sdist that finds anything supported by revision control"""
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /