git-svn:如何更改dcommit上的svn用户名?

时间:2012-08-14 16:44:00

标签: git-svn

我使用git svn clone将SVN存储库克隆到git存储库中。在那个时间点,我在该网站上没有用户名,因此没有使用--username的{​​{1}}选项。因为我现在可以使用我的新用户名提交到SVN存储库,我想添加该用户名。没有它,clone就会失败:

dcommit

有没有办法告诉git有关新用户名? git-svn manual似乎没有帮助:只允许% 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. init添加用户名。我不知道git如何在内部使用SVN,但我想应该有一种方法可以在之后添加用户名。

请注意,我使用的是SVN over http。

3 个答案:

答案 0 :(得分:0)

我认为您可以使用此过程(来自git svn联机帮助页)来创建现有svn存储库的克隆,但更改git svn init步骤以便指定用户名。您的新git-svn存储库将具有用户名。

# 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

答案 1 :(得分:0)

请注意,如果您指定了用户名,则无法在Git 2.16.x / 2.17(2018年第一季度)之前提交合并提交。
那是因为“git svn dcommit”没有考虑到a的事实 svn+ssh://username@的网址(通常用于推送)是指 到没有username@的同一个SVN存储库,并在失败时失败 svn.pushmergeinfo选项已设置。

commit 8aaed89Jason Merrill (jwmerrill)(2017年9月15日) Jason Merrill -- jwmerrill --合并于commit 8aaed89,2017年9月17日)

  

git-svn:修复svn.pushmergeinfo处理svn+ssh用户名。

     

以前,与svn dcommit设置合并的svn.pushmergeinfo会   收到错误消息,如

merge parent <X> for <Y> is on branch svn+ssh://gcc.gnu.org/svn/gcc/trunk, 
which is not under the git-svn root svn+ssh://jason@gcc.gnu.org/svn/gcc!"
     

所以,在比较之前,让我们调用remove_username(就像我们对svn info所做的那样)   rooturl到branchurl

答案 2 :(得分:0)

您可以在dcommit命令中指定用户名,例如

git svn dcommit --username=isapir