diff options
Diffstat (limited to 'Tools/scripts/svneol.py')
-rwxr-xr-x | Tools/scripts/svneol.py | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/Tools/scripts/svneol.py b/Tools/scripts/svneol.py deleted file mode 100755 index 6c70da9692..0000000000 --- a/Tools/scripts/svneol.py +++ /dev/null @@ -1,114 +0,0 @@ -#! /usr/bin/env python3 - -r""" -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 -""" - -import re -import os -import sys -import subprocess - - -def propfiles(root, fn): - default = os.path.join(root, ".svn", "props", fn + ".svn-work") - try: - format = int(open(os.path.join(root, ".svn", "format")).read().strip()) - except IOError: - return [] - if format in (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")] - raise ValueError("Unknown repository format") - - -def proplist(root, fn): - """Return a list of property names for file fn in directory root.""" - result = [] - for path in propfiles(root, fn): - try: - f = open(path) - except IOError: - # no properties file: not under version control, - # or no properties set - continue - while True: - # 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 - - -def set_eol_native(path): - cmd = 'svn propset svn:eol-style native "{}"'.format(path) - propset = subprocess.Popen(cmd, shell=True) - propset.wait() - - -possible_text_file = re.compile(r"\.([hc]|py|txt|sln|vcproj)$").search - - -def main(): - for arg in sys.argv[1:] or [os.curdir]: - if os.path.isfile(arg): - root, fn = os.path.split(arg) - if 'svn:eol-style' not in proplist(root, fn): - set_eol_native(arg) - elif os.path.isdir(arg): - for root, dirs, files in os.walk(arg): - if '.svn' in dirs: - dirs.remove('.svn') - for fn in files: - if possible_text_file(fn): - if 'svn:eol-style' not in proplist(root, fn): - path = os.path.join(root, fn) - set_eol_native(path) - - -if __name__ == '__main__': - main() |