Search code examples
git-svn

git-svn: how to change the svn username on dcommit?


I cloned a SVN repository into a git repository using git svn clone. At that point in time, I did not have a username at that site and hence didn't use the --username option of clone. As I can now commit to the SVN repository with my new username, I would like to add that username. Without it, dcommit simply fails:

% LANG=C git svn dcommit 
Committing to <THE URL> ...
RA layer request failed: Server sent unexpected return value (405 Method Not Allowed) in response to MKACTIVITY request for '/svn/!svn/act/0ceca4c5-f7b4-4432-94be-0485559a6040' at /usr/lib/git-core/git-svn line 945.

Is there a way to tell git about a new username? The git-svn manual doesn't seem to help: adding a username is only allowed on init and branch. I don't know how git works with SVN internally, but I guess there should be a way to add a username afterwards.

Note that I am using SVN over http.


Solution

  • I think you can use this procedure (from the git svn manpage) to create a clone of your existing svn repository, but change the git svn init step so that it specifies a username. Your new git-svn repository will then have a username.

    # Clone locally - make sure the refs/remotes/ space matches the server
    
        mkdir project
        cd project
        git init
        git remote add origin server:/pub/project
        git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
        git fetch
    # Prevent fetch/pull from remote git server in the future,
    # we only want to use git svn for future updates
        git config --remove-section remote.origin
    # Create a local branch from one of the branches just fetched
    
        git checkout -b master FETCH_HEAD
    # Initialize 'git svn' locally (be sure to use the same URL and -T/-b/-t options as were used on server)
        git svn init --username my_new_name http://svn.example.com/project
    # Pull the latest changes from Subversion
        git svn rebase