2010-01-07 589 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命令时,每提供一个 时间,都将在命令提示符处明确提供凭证或者 ,或通过保存的 凭证(可能包含多个用户)来隐式提供凭证。