Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 获取当前用户_Svn - Fatal编程技术网

Svn 获取当前用户

Svn 获取当前用户,svn,Svn,如何获取在特定工作站上使用svn的当前用户 我可以使用带有开关的svn.exe可执行文件来获取该信息吗 谢谢。没有“正在使用svn的当前用户”之类的东西。每次提交svn命令时,都会在命令提示符处显式提供凭据,或者通过保存的凭据隐式提供凭据,其中可能包括多个用户。如果使用svn+SSH,给定工作站的用户用户名位于SVN的配置文件中。假设使用Windows workstation,此文件将位于C:\Documents and Settings\\Application Data\Subversion

如何获取在特定工作站上使用svn的当前用户

我可以使用带有开关的svn.exe可执行文件来获取该信息吗


谢谢。

没有“正在使用svn的当前用户”之类的东西。每次提交svn命令时,都会在命令提示符处显式提供凭据,或者通过保存的凭据隐式提供凭据,其中可能包括多个用户。

如果使用svn+SSH,给定工作站的用户用户名位于SVN的配置文件中。假设使用Windows workstation,此文件将位于C:\Documents and Settings\\Application Data\Subversion文件夹中。然后,您可以编写一个脚本来获取此名称,并根据需要执行任何操作


我认为这只适用于SVN+SSH设置。它在SVN的其他连接设置中无法工作。

如果您谈论的是保存的凭据:要么从日志中推断出来,要么提交一些内容(从提到的工作站/服务器),这样您就可以看到日志中的内容。

在Linux中,您会在主目录中找到以下文件:

~/.subversion/auth/svn.simple


在该文件中,您可以看到“当前登录的用户”。它位于Windows中

%APPDATA%\Subversion\auth\
要查找此目录,只需转到
run
(win key+r),粘贴上面的命令并点击回车键或点击
run
按钮

对我来说,文件夹
svn.simple
中有一个文件。它是一个文本文件,包含保存的身份验证数据的信息。我有这样的想法:

...
K 8
username
V 6
kosta
END
说明:

  • Grep
    Grep username~/.subversion/auth/svn.simple/*
    中的文件将查找用户名

  • --after context=2
    将在遇到用户名后打印+2行

  • 输出:

    username
    V 6
    Bhavik
    
    $ 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
    
  • 仅打印用户名
    使用
    | tail-1
    将为我提供用户名,即
    Bhavik
    希望这能解释代码。

    编辑:注意,此答案仅适用于1.9之前的SVN版本。如果您使用的是SVN version>1.9,请尝试@bahrep中描述的
    SVN auth
    方法

    这是我使用的bash脚本,我将它放在~/bin/文件夹中,名为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
    
    #/bin/bash
    调试=错误
    
    对于((i=1;i有几种方法可以查找存储的登录凭据:

    • 运行
      svn auth
      查看缓存在svn凭据存储中的凭据和证书(
      %APPDATA%\Subversion\auth
    • 运行
      cmdkey
      查看存储在Windows凭据管理器中的凭据
    • 如果您的SVN服务器与Active Directory集成并支持集成的Windows身份验证,则您的Windows登录凭据将用于身份验证,但不会被缓存。您可以运行
      whoami
      查找您的用户帐户名
    顺便说一句,不要错过:


    没有“正在使用svn的当前用户”这样的东西 提交SVN命令时,会提供凭据 在命令提示下显式地或隐式地通过保存 凭据,其中可能包括多个用户


    已经建议的
    svn auth
    对我有效,但要获得“最终”确认,您可以使用修改并运行的文件

    svn信息修改/文件

    svn日志修改/文件


    查看上次更改的作者:XXXX,或列出用户名的更改历史记录。

    谢谢,我找到的唯一文件是C:\Documents and Settings\irfan\Application Data\Subversion\auth\svn.simple\…中的1d711cc713195841ccd6ab5d28737ce9。每个安装都不同,但可以完成…是的。有strangely在那里命名了文件:851320a14c12593c4c03577412869669。当使用文本编辑器打开文件时,其中一个条目是:“username V 12 MartinBerger”,可以看到谁登录了。在本例中,是我。可以使用以下awk脚本从那里提取用户名:
    /^K/{key=1;val=0;}/^V/{key=0;val=1;}!/^[KV]/{if(key){kname=$1;}如果(val&&kname==“username”){print$1;val=0;}
    将其放入svuser.awk并按如下方式运行:
    cat~/.subversion/auth/svn.simple/*|awk-f svuser.awk
    从~/.subversion/auth/svn.simple/*中的文件中确定它将查找用户名——在context=2之后,它将在遇到用户名V 6 Bhavik后打印+2行,最后获得用户名;tail-1将给我我的用户名ername i.e Bhavik希望这可以解释我的代码这个解决方案唯一的问题是,如果你使用多个存储库,你只会列出最后一个存储库的用户名。所以这一个将得到所有的:
    对于~/.subversion/auth/svn.simple/*;do grep username$file——在context=2 | tail-1;done
    之后,你不需要它。只需运行
    svn auth
    使用最新的svn客户端版本。使用最新的svn客户端,您可以运行。您不需要它。只需使用最新的svn客户端版本运行
    svn auth
    。您不需要它。只需使用最新的svn客户端版本运行svn auth。虽然这是从svn版本1.9开始添加的(请参阅:)。我的公司在我们的构建服务器上使用早期版本,所以我不知道。我将更新我的答案,以说明它仅适用于1.9之前的版本,如果使用1.9版本,请参考您的答案。如果您运行
    svn update
    ,它显然是以某个用户的身份运行的。问题是如何知道该用户是什么。
    $ 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