SVNはユーザー名を変更します


86

特定のリビジョンのユーザー名を変更する方法など、多くの例を見つけました。

しかし、必要なのはこれです。同僚の認証資格情報を使用してチェックアウトを行い、将来のコミットのためにそれを自分の資格情報に変更する必要があります。

すでに多くの変更が行われているため、資格情報だけでチェックアウトすることはできません...

これに精通している人はいますか?



@ペッカ:良い答えです。ただし、この質問はTortoiseSVNに固有のものではありませんでした。
Raphael Schweikert 2012

回答:


73

あなたはでユーザーを変更することができます

  • Subversion 1.6以前:

    svn switch --relocate protocol://currentUser@server/path protocol://newUser@server/path
    
  • Subversion 1.7以降:

    svn relocate protocol://currentUser@server/path protocol://newUser@server/path
    

何であるかを知るにprotocol://currentUser@server/pathは、

svn info

あなたの作業コピーで。


4
「svn:E155024:無効なソースURLプレフィックス: 'protocol:// currentUser @ server / path'(ターゲットのURL'protocol:// newUser @ server / path 'と重複しません)」[実際のURLと、もちろん]
James Roth

3
これは、プレーンなhttp-auth認証スキームでは機能しません。そのユースケースで保存されたユーザー資格情報を削除する方法については、この回答を参照してください。@ジェームズそれはおそらくあなたの問題です。
カレブ2012

素晴らしいもの..Thnaks :)
カルマ

64

これを行う最も簡単な方法は、次のチェックアウトまたはコミットで--usernameオプションを使用することです。例えば:

svn commit --username newUser

または

svn co --username newUser

その後、キャッシュされ、将来のコマンドのデフォルトのユーザー名として使用されます。

参照: Subversionでは、ログイン名以外のユーザーになることはできますか?


私はそれをしました、そしてそれからsvn info私はAuthorラインに変化が見られません。
vsync 2014年

2
上記のリンクから:「Subversionがファイルシステムから直接リポジトリにアクセスしている場合、ファイルシステムのアクセス許可を使用してリポジトリにアクセスします(SSHトンネリングを介して接続する場合、SVNはサーバー上のFSアクセス許可を使用します。 SSHログイン。)したがって、svn checkout--usernameはリポジトリで機能しない可能性があります。」
マットブラウン2014年

1
@MattBrowneは正しいです。「svn + ssh://svn.server.com」のようなパスは、-usernameの変更を尊重しません。再配置を使用する受け入れられた答えは、私がそれを変更できる唯一の方法でした。
FlipMcF 2016年

51

私はまったく同じ問題を抱えており、SVNクライアントはユーザー認証データをどこに保存するのですか?

  1. cd~/.subversion/auth/
  2. するfgrep -l <yourworkmatesusernameORtheserverurl> */*
  3. 見つかったファイルを削除します。
  4. リポジトリでの次の操作では、ユーザー名/パスワード情報の入力を再度求められます。

(Windowsの場合、手順は類似しています。authディレクトリはにあります%APPDATA%\Subversion\)。

これは、ユーザー名がサーバーログインの一部であるSVNアクセススキームでのみ機能するため、を使用してアクセスされるリポジトリには使用されないことに注意してくださいfile://


1
注目に値するのは、IntelliJ IDEAを実行している場合、変更を有効にするにはIntelliJも再起動する必要があることです
AndersG 2012

1
fgrepコマンドが持つべき-lコマンドがあなたのファイルパスを告げるように、。編集するつもりでしたが、長さが足りません。
vguzmanp 2013年

16

実行できるコマンド:

svn up --username newUsername

完璧に動作します;)

PS単なるヒント:「-username」オプションは、更新だけでなく、任意の「svn」コマンドで実行できます。


5

プロトコルがhttpで、Subversion 1.7を使用している場合は、任意のコマンドでグローバル--usernameオプションを使用するだけで、いつでもユーザーを切り替えることができます。

インゴの方法がうまくいかなかったとき、これがうまくいったと私は思った。


3

に移動しTortoise SVN --> Settings --> Saved Dataます。

認証データをクリアするオプションがあり、クリアボタンをクリックすると、ユーザーID / pwdをクリアする接続を選択できます。

これを実行した後、チェックアウトまたは更新アクティビティを実行すると、ユーザーIDとパスワードの入力を求められます。


2

Win10の場合は、このフォルダーを削除してIDEを閉じたり開いたりする必要があります

C:\ Users \ User \ AppData \ Roaming \ Subversion \ auth

、私のプロジェクトでも「.subversion」フォルダはなく、「。svn」のみです


1

また、たまたま遅すぎて、間違った資格情報でコミットしたことに気付いた人にとって、解決策は(事後)そのリビジョンのsvn作成者を変更することです:この質問を参照してください

基本的に構文は次のとおりです。

svn propset --revprop -r (revision_number) svn:author (new username)

1

Ingo Kegelのソリューションに基づいて、すべてのサブフォルダーのユーザー名を変更するための「小さな」bashスクリプトを作成しました。覚えておいてください:

  1. 変化する <NEW_USERNAME>新しいユーザー名にします。
  2. <OLD_USERNAME>現在のユーザー名に変更します(現在ユーザー名が設定されていない場合は、単に削除します<OLD_USERNAME>@)。

以下のコードでは、svnコマンドは出力されるだけです(実行されません)。svnコマンドを実行するには、そのecho前の空白と空白を削除します(すぐ上popd)。

for d in */ ; \
do echo $d ; pushd $d ; \
url=$(svn info | grep "URL: svn") ; \
url=$(echo ${url#"URL: "}) ; \
newurl=$(echo $url | sed "s/svn+ssh:\/\/<OLD_USERNAME>@/svn+ssh:\/\/<NEW_USERNAME>@/") ; \
echo "Old url: "$url ; echo "New url: "$newurl ; \
echo svn relocate $url $newurl ; \
popd ; \
done

お役に立てば幸いです。


0

同僚のブランチと同じトランクから(独自の資格情報を使用して)独自のブランチを作成し、同僚のブランチから作業コピーにマージしてから、ブランチからマージできると思います。今後のすべてのコミットは、あなたからのものとしてマークする必要があります。


0

同僚にパッチを作成するように依頼することができます。パッチを作成すると、加えられたすべての変更が1つのファイルにまとめられ、自分のチェックアウトに適用できます。これにより、すべてのファイルが適切に更新され、彼の側で変更を元に戻して、チェックインできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.