Re: Commit bot without password
From: Kim Gräsman <kim.grasman_at_gmail.com>
Date: Sat, 6 Sep 2014 09:19:34 +0200
Hi all,
This worked out really well for us. We use the Apache SVN server on
Instead, we inspected the transaction file and parsed it manually. I
One snag is that it seems like authorization happens before the
Thanks for your excellent suggestions!
Here's the little module we use (transcribed, I might have made syntax
----
import os
def parse_revprops(revprop_data):
revprops = {}
for index, line in enumerate(revprop_data):
if line == "END" or line == "":
continue
if (index % 4) == 1:
current_key = line
elif (index % 4) == 3:
revprops[current_key] = line
return revprops
def serialize_revprops(revprops):
output = ""
for key, value in revprops.items():
output += "K %d\n" % len(key)
output += "%s\n" % key
output += "V %d\n" % len(value)
output += "%s\n" % value
return output + "END\n"
def rewrite_author(subversion_folder, transaction_id):
# Read revprops transaction file directly.
props_file = os.path.join(subversion_folder, "db",
"transactions", transaction_id + ".txn",
"props")
with open(props_file, "r") as fd:
revprops = parse_revprops(fd.read().splitlines())
# Only rewrite author for bot commits
if revprops["svn:author"] != "bot":
return True
# If there's no on-behalf-of specified, just commit as bot directly.
if "on-behalf-of" not in revprops:
return True
# Move svn:author to committed-by property, and on-behalf-of to svn:author.
revprops["committed-by"] = revprops["svn:author"]
revprops["svn:author"] = revprops["on-behalf-of"]
del revprops["on-behalf-of"]
# Write back.
with open(props_file, "w", newline="\n") as fd:
fd.write(serialize_revprops(revprops))
return True
----
- Kim
Received on 2014-09-06 09:20:05 CEST
|
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.