Ron Bieber <ron@bieberlabs.com> writes:
> > Ah, I think I must have missed this suggestion in the past. I can
> > certainly see the utility of such a feature. Do you envision this
> > being something more than you can already do with shell tools? Want
> > me to write you a Python-bindings-using script to do this for you?
> > :-)
> >
>
> This would be really helpful, if nothing else to give me an idea as to
> how to do these kinds of things myself. I'd love to be able to
> contribute tools we write around Subversion at some point that prove
> useful to us managing our build, but I'm not an SVN API god yet ... ;>)
Ask and ye shall receive... you have *GOT* to love Python language
bindings, man. Net coding an smoke-testing time was about 15
minutes.
This little script will search your working copy for a given property.
Searching revisions for revision props is almost as trivial -- you
just use client.svn_client_revprop_list(), and cycle through the range
of revisions you want to search (at a cost of some network turnarounds
per revision, of course).
--------------------------------------------------------------------------
#!/usr/bin/python2
import sys
import string
import os.path
from svn import core, client
def find_props(pool, prop_name, wc_path):
revision = core.svn_opt_revision_t()
revision.kind = core.svn_opt_revision_working
ctx = client.svn_client_ctx_t()
providers = []
providers.append(client.svn_client_get_simple_provider(pool))
providers.append(client.svn_client_get_username_provider(pool))
providers.append(client.svn_client_get_ssl_server_trust_file_provider(pool))
providers.append(client.svn_client_get_ssl_client_cert_file_provider(pool))
providers.append(client.svn_client_get_ssl_client_cert_pw_file_provider(pool))
ctx.auth_baton = core.svn_auth_open(providers, pool)
ctx.config = core.svn_config_get_config(None, pool)
props = client.svn_client_proplist(wc_path, revision, 1, ctx, pool)
for prop in props:
if prop[1].has_key(prop_name):
print prop[0]
if __name__ == "__main__":
argc = len(sys.argv)
if argc < 2 or argc > 3:
print "Usage: %s PROPNAME [WC-PATH]" % (sys.argv[0])
print
print "List the set of paths in working copy WC-PATH ('.' by default)"
print "which contain the property name PROPNAME."
print
sys.exit(1)
prop_name = sys.argv[1]
wc_path = ''
if argc == 3:
wc_path = sys.argv[2]
if wc_path[-1] == '/' or wc_path[-1] == '\\':
wc_path = wc_path[:-1]
core.run_app(find_props, prop_name, wc_path)
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Sun Jul 25 04:26:42 2004