# HG changeset patch # User Augie Fackler # Date 1239675153 18000 # Node ID 9f0738587f943255bb36c15251341f0ee3b3f70b # Parent 112d57bb736e38938c651abbce989ccb6cba0ecb Re-re-refix username support, add a comment so maybe I remember this time. diff --git a/svncommands.py b/svncommands.py --- a/svncommands.py +++ b/svncommands.py @@ -19,8 +19,7 @@ def incoming(ui, svn_url, hg_repo_path, svn_url = util.normalize_url(svn_url) initializing_repo = False - user = opts.get('username', hgutil.getuser()) - passwd = opts.get('password', '') + user, passwd = util.getuserpass(opts) svn = svnwrap.SubversionRepo(svn_url, user, passwd) author_host = "@%s" % svn.uuid tag_locations = tag_locations.split(',') @@ -68,8 +67,7 @@ def rebuildmeta(ui, repo, hg_repo_path, raise hgutil.Abort('You must pass the svn URI used to create this repo.') uuid = None url = args[0].rstrip('/') - user = opts.get('username', hgutil.getuser()) - passwd = opts.get('password', '') + user, passwd = util.getuserpass(opts) svn = svnwrap.SubversionRepo(url, user, passwd) subdir = svn.subdir svnmetadir = os.path.join(repo.path, 'svn') diff --git a/util.py b/util.py --- a/util.py +++ b/util.py @@ -6,6 +6,14 @@ from mercurial import node from mercurial import util as hgutil +def getuserpass(opts): + # DO NOT default the user to hg's getuser(). If you provide + # *any* default username to Subversion, it won't use any remembered + # username for the desired realm, breaking OS X Keychain support, + # GNOME keyring support, and all similar tools. + return opts.get('username', None), opts.get('password', '') + + def version(ui): """Guess the version of hgsubversion. """ diff --git a/utility_commands.py b/utility_commands.py --- a/utility_commands.py +++ b/utility_commands.py @@ -36,8 +36,7 @@ def genignore(ui, repo, hg_repo_path, fo url = hge.url if url[-1] == '/': url = url[:-1] - user = opts.get('username', hgutil.getuser()) - passwd = opts.get('passwd', '') + user, passwd = util.getuserpass(opts) svn = svnwrap.SubversionRepo(url, user, passwd) dirs = [''] + [d[0] for d in svn.list_files(branchpath, r) if d[1] == 'd'] for dir in dirs: diff --git a/wrappers.py b/wrappers.py --- a/wrappers.py +++ b/wrappers.py @@ -98,9 +98,7 @@ def push(orig, ui, repo, dest=None, *arg raise hgutil.Abort('wrong subversion url!') svn_commit_hashes = dict(zip(hge.revmap.itervalues(), hge.revmap.iterkeys())) - user = opts.get('username', hgutil.getuser()) - passwd = opts.get('password', '') - + user, passwd = util.getuserpass(opts) # Strategy: # 1. Find all outgoing commits from this head if len(repo.parents()) != 1: @@ -250,8 +248,7 @@ def pull(orig, ui, repo, source="default ' of SWIG.\n') have_replay = False initializing_repo = False - user = opts.get('username', hgutil.getuser()) - passwd = opts.get('password', '') + user, passwd = util.getuserpass(opts) svn = svnwrap.SubversionRepo(svn_url, user, passwd) author_host = "@%s" % svn.uuid tag_locations = ['tags', ]