2010-01-07 145 views
24

如何獲取在特定工作站上使用svn的當前用戶?Svn獲取當前用戶

我可以使用svn.exe可執行文件與某些開關來獲取該信息。

謝謝。

+2

使用最新的SVN客戶端,您可以運行['svn auth'](https://stackoverflow.com/a/44678232/761095)。 – bahrep 2017-06-21 13:58:40

回答

8

「沒有使用svn的當前用戶」。每次提交SVN命令時,憑證都會在命令提示符下顯式提供,或者通過保存的憑證(可能包含多個用戶)隱式提供。

+2

如果你運行'svn update',它顯然是作爲* some *用戶運行的。問題是如何知道那是什麼用戶。 – Kip 2017-07-11 16:38:55

1

如果您使用的是SVN + SSH,那麼給定工作站的用戶名在SVN的配置文件中。假設Windows工作站,該文件將位於C:\ Documents and Settings \\ Application Data \ Subversion文件夾中。然後你可以編寫一個腳本來獲得這個名字,並做你所需要的。

我認爲這隻適用於SVN + SSH設置。它無法在SVN的其他連接設置中工作。

+1

謝謝,我已經找到了唯一的文件,這是一個: 1d711cc713195841ccd6ab5d28737ce9在 C:\ Documents和Settings \伊爾凡\應用數據\顛覆\權威性\ svn.simple \ ... 這對每個不同安裝但它可以做... – 2010-01-07 20:01:46

0

如果您在談論保存的憑據:要麼從日誌中推斷出來,要麼從提及的工作站/服務器提交一些東西,以便查看日誌所說的內容。

23

在Linux中,你會發現下面的文件在你的home目錄:

〜/的.subversion/auth /中svn.simple

在這個文件中,你可以看到「當前登錄用戶「。

+2

是的。那裏有一個奇怪的命名文件:851320a14c12593c4c03577412869669。當用文本編輯器打開文件時,其中一個條目是:'用戶名 V 12 MartinBerger'可以看到誰在登錄。在這種情況下,我。 – 2014-01-10 13:38:23

+0

可以使用下面的awk腳本從那裏提取用戶名: '/^K/{key = 1; VAL = 0; } /^ V/{key = 0; VAL = 1; } !如果(密鑰){kname = $ 1; } if(val && kname ==「username」){ print $ 1; val = 0; } }' 它放入svnuser.awk和運行這樣的: '貓〜/的.subversion/auth /中svn.simple/* | awk -f svnuser.awk' – 2014-01-22 15:03:00

+0

非常感謝你... – VVB 2017-09-25 10:46:54

6

在Windows上,它位於

%APPDATA%\Subversion\auth\ 

爲了找到這個目錄,只要進入run雙贏的關鍵 + [R),粘貼上面的命令並打輸入或點擊Run按鈕。

對我而言,文件夾svn.simple中有一個文件。它是一個文本文件,它具有保存的認證數據信息。我有這樣的事情:

... 
K 8 
username 
V 6 
kosta 
END 
+1

你不需要這個。用最新的SVN客戶端版本運行'svn auth'。 – bahrep 2017-06-21 14:00:05

7
grep username ~/.subversion/auth/svn.simple/* --after-context=2 | tail -1 

說明:

  1. 的grep在grep username ~/.subversion/auth/svn.simple/*該文件將查找用戶名

  2. --after-context=2將打印+2行遇到後用戶名

輸出:

username 
V 6 
Bhavik 
  • 要只打印用戶名
    使用| tail -1會給我我的用戶名即Bhavik
  • 希望這解釋了代碼。

    +0

    你能解釋你的代碼嗎? – Bulat 2015-08-21 08:04:02

    +0

    當然 從在〜/的.subversion/AUTH/svn.simple /文件*它會尋找用戶名 --AFTER上下文= 2將打印2線遇到的用戶名的用戶名 V 6 Bhavik 後最後獲取我們的用戶名|尾-1 將給我我的用戶名,即Bhavik 希望這解釋了我的代碼 – 2015-09-24 07:18:14

    +0

    這個解決方案的唯一問題是,如果您使用多個存儲庫,您將只列出最後一個的用戶名。 – Craig 2016-08-22 13:49:28

    -1

    編輯:請注意,此答案僅適用於1.9之前的SVN版本。如果您在使用SVN版本> 1.9,然後嘗試中所描述的svn auth方法@ bahrep的answer

    這是一個bash腳本,我使用,我把我的〜/斌/文件夾,並呼籲svn_whoami.sh:

    #!/bin/bash 
    
    debug=false 
    
    for ((i=1;i<=$#;i++)) do 
        case ${!i} in 
    
         -h|--help) 
          programName=$(basename ${0}) 
          echo "Usage:" 
          echo " ${programName} [-h|--help] [-d|--debug]" 
          echo 
          echo "Example:" 
          echo " ${programName} --debug" 
          exit 0; 
          ;; 
         -d|--debug) 
          debug=true; 
          ;; 
    
        esac; 
    done; 
    
    if [ "${debug}" == "true" ]; then 
        echo "cat ~/.subversion/auth/svn.simple/* | grep -A6 username --color"; 
    fi; 
    
    cat ~/.subversion/auth/svn.simple/* | grep -A6 svn:realmstring 
    

    輸出:

    $ svn_whoami.sh -d 
    cat ~/.subversion/auth/svn.simple/* | grep -A6 username --color 
    svn:realmstring 
    V 53 
    <http://your.1st.url.name.here:80> Authorization Realm 
    K 8 
    username 
    V 5 
    yourUserName 
    -- 
    svn:realmstring 
    V 45 
    <http://your.2nd.url.name.here:80> Authorization Realm 
    K 8 
    username 
    V 5 
    yourUserName 
    
    +0

    你不需要這個。用最新的SVN客戶端版本運行svn auth。 – bahrep 2017-06-21 14:06:45

    +0

    的確如此,儘管這只是在SVN版本1.9中添加的(請參閱:http://subversion.apache.org/docs/release-notes/1.9.html#svn-auth)。我的公司在我們的構建服務器上使用早期版本,所以我不知道它。我會更新我的答案,以便注意它只適用於1.9以前的版本,並且如果使用版本1.9,則參考您的答案。 – Craig 2017-10-10 12:44:05

    4

    有幾種方法找出存儲登錄憑據:

    • 運行svn auth查看在SVN憑證存儲區(%APPDATA%\Subversion\auth)中緩存的憑證和證書。
    • 運行cmdkey查看存儲在Windows Credential Manager中的憑證。
    • 如果您的SVN服務器與Active Directory集成並支持集成Windows身份驗證,則您的Windows登錄憑據將用於身份驗證,但它們不會被緩存。您可以運行whoami來查找您的用戶帳戶名稱。

    順便說一句,千萬不要錯過Michael Hackner's answer

    有沒有這種東西 「也就是用svn當前用戶。」提交SVN命令時,每提供一個 時間,都將在命令提示符處明確提供憑證或者 ,或通過保存的 憑證(可能包含多個用戶)來隱式提供憑證。