4
# Licensed to the Apache Software Foundation (ASF) under one
5
# or more contributor license agreements. See the NOTICE file
6
# distributed with this work for additional information
7
# regarding copyright ownership. The ASF licenses this file
8
# to you under the Apache License, Version 2.0 (the
9
# "License"); you may not use this file except in compliance
10
# with the License. You may obtain a copy of the License at
12
# http://www.apache.org/licenses/LICENSE-2.0
14
# Unless required by applicable law or agreed to in writing,
15
# software distributed under the License is distributed on an
16
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
# KIND, either express or implied. See the License for the
18
# specific language governing permissions and limitations
25
from svn import repos, fs, core
27
def duplicate_ephemeral_txnprops(repos_path, txn_name):
28
fs_ptr = repos.fs(repos.open(repos_path))
29
txn_t = fs.open_txn(fs_ptr, txn_name)
30
for name, value in fs.txn_proplist(txn_t).items():
31
if name.startswith(core.SVN_PROP_TXN_PREFIX):
32
name = core.SVN_PROP_REVISION_PREFIX + \
33
name[len(core.SVN_PROP_TXN_PREFIX):]
34
fs.change_txn_prop(txn_t, name, value)
36
def usage_and_exit(errmsg=None):
37
stream = errmsg and sys.stderr or sys.stdout
41
persist-ephemeral-txnprops.py REPOS_PATH TXN_NAME
43
Duplicate ephemeral transaction properties so that the information
44
they carry may persist as properties of the revision created once the
45
transaction is committed. This is intended to be used as a Subversion
46
pre-commit hook script.
48
REPOS_PATH is the on-disk path of the repository whose transaction
49
properties are being examined/modified. TXN_NAME is the name of the
52
Ephemeral transaction properties, whose names all begin with the
53
prefix "%s", will be copied to new properties which use the
56
""" % (core.SVN_PROP_TXN_PREFIX, core.SVN_PROP_REVISION_PREFIX))
58
stream.write("ERROR: " + errmsg + "\n")
59
sys.exit(errmsg and 1 or 0)
64
usage_and_exit("Incorrect number of arguments.")
65
repos_path = sys.argv[1]
66
txn_name = sys.argv[2]
67
duplicate_ephemeral_txnprops(repos_path, txn_name)
69
if __name__ == "__main__":