5

を使用して、SVN リポジトリを git リポジトリにクローンしましたgit svn clone。その時点で、私はそのサイトでユーザー名を持っていなかったため、--usernameオプションを使用しませんでしcloneた. 新しいユーザー名で SVN リポジトリにコミットできるようになったので、そのユーザー名を追加したいと思います。それがなければ、dcommit単に失敗します:

% 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.

新しいユーザー名についてgitに伝える方法はありますか? git-svn マニュアルは役に立たないようです: ユーザー名の追加は と でのみ許可されinitていbranchます。git が内部で SVN とどのように連携しているかはわかりませんが、後でユーザー名を追加する方法があるはずです。

http 経由で SVN を使用していることに注意してください。

4

3 に答える 3

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
于 2012-08-14T16:59:53.507 に答える
0

ユーザー名を指定すると、Git 2.16.x/2.17 (2018 年第 1 四半期) より前ではなく、マージ コミットをコミットできないことに注意してください。
これは、 (通常はプッシュに使用される) を持つURL がなしで同じ SVN リポジトリを参照し、オプションが設定されている場合に失敗する git svn dcommitという事実を " " が考慮していないため です。svn+ssh://username@username@svn.pushmergeinfo

Jason Merrill ( )によるcommit 8aaed89 (2017 年 9 月 15 日)を参照してください。( 2017 年 9 月 17 日コミット 8aaed89Jason Merrillによってマージされました)jwmerrill
jwmerrill

git-svn:ユーザー名svn.pushmergeinfoの処理を修正しました。svn+ssh

以前は、 set と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!"

したがって、rooturl を と比較する前にremove_username( の場合と同様に) を呼び出しましょう。svn infobranchurl

于 2018-01-28T06:11:05.337 に答える