7

我想在我的 ~/.gitconfig 中将 github.token 的值设置为 shell 命令的结果。我目前有以下内容:

[github]
  user = zmanji
  token = !echo ~/.githubtoken 2> /dev/null

但是 git config github.token 不返回 ~/.githubtoken 文件的内容,而是返回命令本身。我怎样才能让它按需要工作?

编辑:为了清楚起见,我正在努力实现这里暗示的内容:

您还可以将 github.token 定义为一个命令,该命令通过将变量设置为前缀为!.

4

3 回答 3

3

我没有将我的 GitHub 令牌存储在文件中,而是将其存储在我的 OS X 钥匙串中并像这样获取它(来自我的片段.gitconfig):

[github]
  token = !security find-generic-password -gs \"GitHub API Token\" 2>&1 >/dev/null | awk '/password/ {print $2}' | tr -d \\\"
于 2011-09-26T09:14:22.140 回答
2

看来这里的问题是他没有在 gitconfig 设置中设置令牌。他正在使用 defunkt 的集线器工具。这是 git 命令的包装器,除其他外,它允许您拥有GITHUB_USERGITHUB_TOKEN环境变量。这将覆盖本地.gitconfig文件中的设置。

然后为了使其无缝,您指向的用户alias git=hub在他的ZSH config中使用别名。然后,您应该能够获取一个本地文件,您可以在其中设置环境变量,并将您的存储库推送到公共世界,同时保留您所有的私人信息。

**对于 OSX 上的 homebrew 用户,您可以通过brew install hub.

于 2011-09-06T20:47:26.383 回答
0

从我可以从git config 手册页中推断出来,只能git config alias.*定义 shell 命令。

所以也许defunkt正在谈论一个名为 token 的别名

git config alias.token '!security 2>&1 >/dev/null find-generic-password -gs github.token | ruby -e 'print $1 if STDIN.gets =~ /^password: \\\"(.*)\\\"$/''

它将用于快速取回他的 GitHub 令牌的价值。
然后将github.token通过一个经典的git config github.token xxx.

于 2011-08-31T05:59:46.960 回答