特定のリビジョンのユーザー名を変更する方法など、多くの例を見つけました。
しかし、必要なのはこれです。同僚の認証資格情報を使用してチェックアウトを行い、将来のコミットのためにそれを自分の資格情報に変更する必要があります。
すでに多くの変更が行われているため、資格情報だけでチェックアウトすることはできません...
これに精通している人はいますか?
特定のリビジョンのユーザー名を変更する方法など、多くの例を見つけました。
しかし、必要なのはこれです。同僚の認証資格情報を使用してチェックアウトを行い、将来のコミットのためにそれを自分の資格情報に変更する必要があります。
すでに多くの変更が行われているため、資格情報だけでチェックアウトすることはできません...
これに精通している人はいますか?
回答:
あなたはでユーザーを変更することができます
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
あなたの作業コピーで。
これを行う最も簡単な方法は、次のチェックアウトまたはコミットで--usernameオプションを使用することです。例えば:
svn commit --username newUser
または
svn co --username newUser
その後、キャッシュされ、将来のコマンドのデフォルトのユーザー名として使用されます。
svn info
私はAuthor
ラインに変化が見られません。
私はまったく同じ問題を抱えており、SVNクライアントはユーザー認証データをどこに保存するのですか?:
cd
に~/.subversion/auth/
。fgrep -l <yourworkmatesusernameORtheserverurl> */*
。(Windowsの場合、手順は類似しています。auth
ディレクトリはにあります%APPDATA%\Subversion\
)。
これは、ユーザー名がサーバーログインの一部であるSVNアクセススキームでのみ機能するため、を使用してアクセスされるリポジトリには使用されないことに注意してくださいfile://
。
fgrep
コマンドが持つべき-l
コマンドがあなたのファイルパスを告げるように、。編集するつもりでしたが、長さが足りません。
Ingo Kegelのソリューションに基づいて、すべてのサブフォルダーのユーザー名を変更するための「小さな」bashスクリプトを作成しました。覚えておいてください:
<NEW_USERNAME>
新しいユーザー名にします。<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
お役に立てば幸いです。