mirror of
https://github.com/python/cpython.git
synced 2025-11-13 07:26:31 +00:00
Directly read working copy data to obtain list of properties.
This commit is contained in:
parent
84457af29e
commit
8ff212034e
1 changed files with 34 additions and 8 deletions
|
|
@ -28,14 +28,43 @@ For a file not under version control:
|
||||||
and for a file with a binary mime-type property:
|
and for a file with a binary mime-type property:
|
||||||
|
|
||||||
svn: File 'Lib\test\test_pep263.py' has binary mime type property
|
svn: File 'Lib\test\test_pep263.py' has binary mime type property
|
||||||
|
|
||||||
TODO: This is slow, and especially on Windows, because it invokes a new svn
|
|
||||||
command-line operation for every file with the right extension.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
def proplist(root, fn):
|
||||||
|
"Return a list of property names for file fn in directory root"
|
||||||
|
path = os.path.join(root, ".svn", "props", fn+".svn-work")
|
||||||
|
try:
|
||||||
|
f = open(path)
|
||||||
|
except IOError:
|
||||||
|
# no properties file: not under version control
|
||||||
|
return []
|
||||||
|
result = []
|
||||||
|
while 1:
|
||||||
|
# key-value pairs, of the form
|
||||||
|
# K <length>
|
||||||
|
# <keyname>NL
|
||||||
|
# V length
|
||||||
|
# <value>NL
|
||||||
|
# END
|
||||||
|
line = f.readline()
|
||||||
|
if line.startswith("END"):
|
||||||
|
break
|
||||||
|
assert line.startswith("K ")
|
||||||
|
L = int(line.split()[1])
|
||||||
|
key = f.read(L)
|
||||||
|
result.append(key)
|
||||||
|
f.readline()
|
||||||
|
line = f.readline()
|
||||||
|
assert line.startswith("V ")
|
||||||
|
L = int(line.split()[1])
|
||||||
|
value = f.read(L)
|
||||||
|
f.readline()
|
||||||
|
f.close()
|
||||||
|
return result
|
||||||
|
|
||||||
possible_text_file = re.compile(r"\.([hc]|py|txt)$").search
|
possible_text_file = re.compile(r"\.([hc]|py|txt)$").search
|
||||||
|
|
||||||
for root, dirs, files in os.walk('.'):
|
for root, dirs, files in os.walk('.'):
|
||||||
|
|
@ -43,9 +72,6 @@ for root, dirs, files in os.walk('.'):
|
||||||
dirs.remove('.svn')
|
dirs.remove('.svn')
|
||||||
for fn in files:
|
for fn in files:
|
||||||
if possible_text_file(fn):
|
if possible_text_file(fn):
|
||||||
path = os.path.join(root, fn)
|
if 'svn:eol-style' not in proplist(root, fn):
|
||||||
p = os.popen('svn proplist "%s"' % path)
|
path = os.path.join(root, fn)
|
||||||
guts = p.read()
|
|
||||||
p.close()
|
|
||||||
if 'eol-style' not in guts:
|
|
||||||
os.system('svn propset svn:eol-style native "%s"' % path)
|
os.system('svn propset svn:eol-style native "%s"' % path)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue