2012-10-03 18 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或其他東西,並完成它。

相關問題