2011-10-06 108 views
75

我發現了很多關於如何更改特定修訂的用戶名的例子等等。SVN更改用戶名

但我需要的是這樣的: 我做了結帳與同事的認證證書,並需要爲未來的承諾將其更改爲我的憑據。

我不能用我的憑據結帳由於已經已經做了很多的變化...

任何人都熟悉這個?

+0

有趣的問題!似乎沒有成爲除的方式[清除所有存儲的數據AUTH](http://blog.ansuz.nl/index.php/2008/10/13/tortoise- SVN-變化倉庫的憑據/) –

+0

@Pekka:好,回答這個問題並不只對TortoiseSVN,雖然 –

回答

65

您可以

要找出protocol://[email protected]/path是,r聯合國

svn info 
在你的工作拷貝

+3

我得到一個錯誤「的svn:E155024:無效的源地址的前綴:「協議:// @ currentUser服務器/路徑」(不重疊目標的URL‘協議:// @ NEWUSER服務器/路徑’)。」 [我真實的URL,當然] –

+2

這並不適用於普通HTTP-auth的authenticaton方案工作參見[這個答案]( http://stackoverflow.com/a/9391129/313192)如何刪除保存的用戶憑據,該用例。@詹姆斯這可能是您的問題。 – Caleb

+0

輝煌的東西.. Thnaks :) – Karma

0

我相信你可以從你的同事的分支創建你自己的分支(使用你自己的憑證),從你的同事的分支合併到你的工作副本,然後從你的分支合併。所有將來的提交都應該標記爲來自你。

0

您可以要求您的同事創建一個補丁程序,該補丁程序會將所有已做成單個文件的更改合併到您自己的簽出文件中。這將更新所有的文件適當的,然後你可以恢復在他身邊的變化,並檢查你的

48

我有完全相同的問題,發現Where does SVN client store user authentication data?解決方案:

  1. cd~/.subversion/auth/
  2. fgrep -l <yourworkmatesusernameORtheserverurl> */*
  3. 刪除找到的文件。
  4. 存儲庫上的下一個操作將再次詢問您的用戶名/密碼信息。

(對於Windows,步驟是類似的; auth目錄在%APPDATA%\Subversion\)。

請注意,這僅適用於SVN訪問方案,其中用戶名是服務器登錄的一部分,因此對於使用file://訪問的存儲庫是沒有用的。

+1

值得注意的是,如果你運行IntelliJ IDEA你也必須重新啓動IntelliJ以使更改生效 – AndersG

+1

'fgrep'命令應該具有'-l',以便該命令告訴您文件路徑。我正在編輯它,但它不夠長。 – vguzmanp

+0

作爲魅力工作,謝謝! – pubsy

50

最簡單的方法是簡單地在下次結賬或提交時使用--username選項。例如:

svn commit --username newUser

svn co --username newUser

然後它將被緩存和將被用作未來命令默認用戶名。

參見: In Subversion can I be a user other than my login name?

+1

+1一個簡單的解決方案 –

+0

我這樣做,然後'SVN info',我看到在'Author'線沒有變化。 – vsync

+1

從上面的鏈接:「當Subversion直接訪問存儲庫關閉文件系統,它使用文件系統權限來訪問存儲庫(當您通過SSH隧道連接,SVN使用服務器上的FS的權限,如確定。您的SSH登錄名。)因此,svn checkout --username可能無法用於您的存儲庫。「 –

4

如果協議是HTTP和你使用Subversion 1.7,你可以通過簡單地使用在任何命令全局--username選項隨時切換用戶。

當Ingo的方法不適用於我時,這是我發現的工作。

+0

請提供示例代碼 – vsync

1

此外,對於那些誰碰巧實現爲時已晚,他們犯下了錯誤的憑據,該解決方案(事後)是改變該修訂的SVN作者:看this question

基本語法:

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

基於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 

希望你覺得它有用!

2

轉到Tortoise SVN --> Settings --> Saved Data

有一個選項可以清除認證數據,點擊清除按鈕,它將允許你選擇你想要清除userid/pwd的連接。

當你這樣做,任何結賬或更新活動後,它將重新提交用戶名和密碼。

3

這很簡單。您應該執行

svn up --username newUserName 

就是這樣。

1

爲Win10,你應該刪除此文件夾,並關閉/打開IDE

C:\用戶\用戶\應用程序數據\漫遊\顛覆\權威性

,也是在我的項目沒有「 .subversion「文件夾,只有」。SVN」