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