2012-10-03 19 views
2

所以,如果..如何在命令行获得github“short”用户名?

$ git config user.name 
↳ Alex Gray    # OK (my name) 
$ git config user.email 
↳ [email protected]  # OK (my email). 

和..

GithubUserForProject() { # in pwd 
    ORIGIN=$(git config --get remote.origin.url) && echo $ORIGIN 
    OWNER=${ORIGIN%/*}  && echo $OWNER # trim URL tail 
    OWNER=${OWNER#*.com/} && echo $OWNER # trim URL head 
    OWNER=${OWNER#*:}  && echo $OWNER # trim ssh URL head 
} 

$ cd /local/git/MyGitHubRepo && GithubUserForProject 
↓ [email protected]:mralexgray/MyGitHubRepo.git 
↓ [email protected]:mralexgray 
↳ mralexgray   # OK (my username, but skanky way of finding it) 

但是......

$ cd /local/git/SomeGuysProject && GithubUserForProject 
↓ git://github.com/someguy/SomeGuysProject.git 
↓ git://github.com/someguy 
↳ someguy    # WRONG! (cloned repo's user!) 

那么,如何可以我确定我的github上 “短用户名” 编程,从env中扣除,github API请求等,或其他(通过脚本或终端会话?

+1

如果您的意思只是您自己的帐户名称,而不是根据您使用的克隆而有所不同,那为什么不直接对其进行硬编码呢?这不会改变。如果这是你想从git遥控器中获得的东西,那么git无法知道哪些遥控器是'你的'或'规范'的。为了对github进行API调用,你必须提供用户凭据,所以你可能只需提供自己的用户名,而不用担心这个调用。也许'出口GITHUB_USERNAME ='mralexgray''并完成它?不知何故,我觉得我误解了你的问题。 –

+0

不,你已经知道了,你的解决方案就是我如何管理这个变量。但是我觉得有点奇怪,这个值与“工作流程”是分离的,并且认为必须有一些方法来获得在那个我没有考虑过的地方。 –

+2

奇怪?这对我来说似乎很明智。 git应该跟所有的遥控器一样,就好像它们一样 - 为什么它应该能够计算出你的github帐户名?你可以在'〜/ .ssh/config'的github节中包含你的用户名作为注释并解析出来。至少这是一个合适的地方来记录它? –

回答

1

我认为这愚蠢的这样一个无聊的问题去绝顶未解......所以缺乏知道如何巧妙地解析在bash字符串而不诉诸一个SED组合我知道的心脏,并... ...

security find-internet-password -s github.com | grep acct | sed 's/"acct"<blob>="//g' | sed 's/"//g'

等瞧....

mralexgray

这可能取决于安装了Github mac客户端...并再次... 它可能不是

+0

您可以将该命令简化为'security find-internet-password -s github.com | grep acct | sed's /^.*=“\(。* \)”。* $/\ 1 /'' –

0

我要同意这些评论者......除非你告诉它,否则Bash如何知道你的用户名?

您可以使用git push来测试它是否为“您的”回购,但即使您的SSH密钥没有正确设置,也会失败。总之,你应该把它设置在~/.bash_profile或其他东西,并完成它。

相关问题