web-dev-qa-db-ja.com

SVNユーザー名の変更

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

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

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

これに詳しい人はいますか?

82
axel freudiger

ユーザーを変更するには

  • 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

作業コピーに。

73
Ingo Kegel

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

svn commit --username newUser

または

svn co --username newUser

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

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

62
Matt Browne

私はまったく同じ問題を抱えており、解決策を見つけました SVNクライアントはユーザー認証データをどこに保存しますか?

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

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

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

52

<<それは非常に簡単です。あなたはただ実行する必要があります

svn up --username newUserName

それでおしまい。 >>

完全に機能し、ヒントにすぎません。更新だけでなく、どのsvnコマンドでも実行できます。

10
Aurimas

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

Ingoの方法がうまくいかなかったとき、これがうまくいくことがわかりました。

5
Adam Nutt

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

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

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

3
Wan

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

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

svn propset --revprop -r (revision_number) svn:author (new username)
1
Patrice M.

win10の場合、このフォルダーを削除してIDEを閉じる/開く必要があります

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

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

1
bratez

Ingo Kegel's solution に基づいて、すべてのサブフォルダーのユーザー名を変更するための「小さな」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
zpon

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

0
Martin

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

0
Alex