diff options
Diffstat (limited to 'tools/dev/wc-format.py')
-rwxr-xr-x | tools/dev/wc-format.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/dev/wc-format.py b/tools/dev/wc-format.py new file mode 100755 index 0000000..3ecfad0 --- /dev/null +++ b/tools/dev/wc-format.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +import os +import sqlite3 +import sys + +MIN_SINGLE_DB_FORMAT = 19 + +def get_format(wc_path): + entries = os.path.join(wc_path, '.svn', 'entries') + wc_db = os.path.join(wc_path, '.svn', 'wc.db') + + formatno = 'not under version control' + + if os.path.exists(wc_db): + conn = sqlite3.connect(wc_db) + curs = conn.cursor() + curs.execute('pragma user_version;') + formatno = curs.fetchone()[0] + elif os.path.exists(entries): + formatno = int(open(entries).readline()) + elif os.path.exists(wc_path): + parent_path = os.path.dirname(os.path.abspath(wc_path)) + if wc_path != parent_path: + formatno = get_format(parent_path) + if formatno >= MIN_SINGLE_DB_FORMAT: + return formatno + + return formatno + +def print_format(wc_path): + # see subversion/libsvn_wc/wc.h for format values and information + # 1.0.x -> 1.3.x: format 4 + # 1.4.x: format 8 + # 1.5.x: format 9 + # 1.6.x: format 10 + # 1.7.x: format 29 + formatno = get_format(wc_path) + print('%s: %s' % (wc_path, formatno)) + + +if __name__ == '__main__': + paths = sys.argv[1:] + if not paths: + paths = ['.'] + for wc_path in paths: + print_format(wc_path) |