- Notifications
You must be signed in to change notification settings - Fork 31.8k
/
Copy pathsvneol.py
executable file
·91 lines (75 loc) · 2.86 KB
/
svneol.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#! /usr/bin/env python
"""
SVN helper script.
Try to set the svn:eol-style property to "native" on every .py, .txt, .c and
.h file in the directory tree rooted at the current directory.
Files with the svn:eol-style property already set (to anything) are skipped.
svn will itself refuse to set this property on a file that's not under SVN
control, or that has a binary mime-type property set. This script inherits
that behavior, and passes on whatever warning message the failing "svn
propset" command produces.
In the Python project, it's safe to invoke this script from the root of
a checkout.
No output is produced for files that are ignored. For a file that gets
svn:eol-style set, output looks like:
property 'svn:eol-style' set on 'Lib\ctypes\__init__.py'
For a file not under version control:
svn: warning: 'patch-finalizer.txt' is not under version control
and for a file with a binary mime-type property:
svn: File 'Lib\test\test_pep263.py' has binary mime type property
"""
importre
importos
defpropfiles(root, fn):
default=os.path.join(root, ".svn", "props", fn+".svn-work")
try:
format=int(open(os.path.join(root, ".svn", "format")).read().strip())
exceptIOError:
return []
ifformatin (8, 9):
# In version 8 and 9, committed props are stored in prop-base, local
# modifications in props
return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
os.path.join(root, ".svn", "props", fn+".svn-work")]
raiseValueError, "Unknown repository format"
defproplist(root, fn):
"Return a list of property names for file fn in directory root"
result= []
forpathinpropfiles(root, fn):
try:
f=open(path)
exceptIOError:
# no properties file: not under version control,
# or no properties set
continue
while1:
# key-value pairs, of the form
# K <length>
# <keyname>NL
# V length
# <value>NL
# END
line=f.readline()
ifline.startswith("END"):
break
assertline.startswith("K ")
L=int(line.split()[1])
key=f.read(L)
result.append(key)
f.readline()
line=f.readline()
assertline.startswith("V ")
L=int(line.split()[1])
value=f.read(L)
f.readline()
f.close()
returnresult
possible_text_file=re.compile(r"\.([hc]|py|txt|sln|vcproj)$").search
forroot, dirs, filesinos.walk('.'):
if'.svn'indirs:
dirs.remove('.svn')
forfninfiles:
ifpossible_text_file(fn):
if'svn:eol-style'notinproplist(root, fn):
path=os.path.join(root, fn)
os.system('svn propset svn:eol-style native "%s"'%path)