Псевдоним github.token в ~/.gitconfig для команды оболочки

Я хотел бы установить значение github.token в моем ~/.gitconfig как результат команды оболочки. В настоящее время у меня есть следующее:

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

Однако git config github.token возвращает не содержимое файла ~/.githubtoken, а саму команду. Как я могу заставить это работать по желанию?

Изменить: чтобы было ясно, я пытаюсь добиться того, что подразумевается здесь:

Вы также можете определить github.token как команду, которая возвращает фактический токен на стандартный вывод, установив переменную в командную строку с префиксом !.


person Zameer Manji    schedule 31.08.2011    source источник
comment
Попробуйте cat вместо echo ?   -  person ZeissS    schedule 31.08.2011
comment
@Zameer - я больше не уверен, что мой cat ответ был правильным. Тестирование... (я удалил свой ответ, пока не буду уверен.)   -  person TSomKes    schedule 16.09.2011


Ответы (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 \\\"
person Andy Stewart    schedule 26.09.2011
comment
Какую версию git вы используете? - person Zameer Manji; 30.09.2011
comment
v1.7.1 (извините за задержку, я только что увидел ваш вопрос). - person Andy Stewart; 14.10.2011

Похоже, загвоздка здесь в том, что он не устанавливает токен в настройках gitconfig. Он использует хаб-инструмент defunkt. Это оболочка для команды git, которая, среди прочего, позволяет вам иметь переменные среды GITHUB_USER и GITHUB_TOKEN. Что переопределит настройки в локальном файле .gitconfig.

Затем, чтобы сделать это бесшовным, пользователь, на которого вы указали псевдоним alias git=hub в его ZSH config< /а>. Затем вы должны иметь возможность получить локальный файл, в котором вы устанавливаете переменные среды, и размещать свой репозиторий в общедоступном мире со всей вашей личной информацией в такт.

**ПРИМЕЧАНИЕ для пользователей доморощенного на OSX, вы можете установить инструмент через brew install hub.

person Geoff Lanotte    schedule 06.09.2011
comment
Я не пытался использовать хаб. Я пытался заставить git config дать мне значение, которое я явно не сохранил в файле. - person Zameer Manji; 07.09.2011
comment
справедливо, похоже, вы просто пытались сохранить значение токена github вне gitconfig, чтобы вы могли поместить его в собственное репо (это было моим намерением, когда я нашел это). В любом случае, удачи! - person Geoff Lanotte; 07.09.2011
comment
Это точно. Вот почему я хотел, чтобы мой gitconfig давал мне значение, которое я в нем не хранил. Таким образом, я мог поделиться всем своим gitconfig, не разглашая общедоступную информацию. Я думаю, что использование переменных среды, как вы предлагаете, будет лучшим решением в долгосрочной перспективе, поскольку я могу иметь эту функциональность в моем bash_profile или bashrc. - person Zameer Manji; 07.09.2011

Из того, что я могу сделать из справочной страницы git config, только git config alias.* имеет возможность определить команды оболочки.

Так что, возможно, 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.

person VonC    schedule 31.08.2011
comment
Моя цель состоит в том, чтобы git config github.token возвращал мой токен, не сохраняя его в моем .gitconfig. Кажется, другие люди тоже так делают: github.com/mattly/dotfiles/ блоб/мастер/gitconfig#L6 . - person Zameer Manji; 31.08.2011
comment
@Zameer, а ты пробовал !sh -c 'echo $GITHUB_TOKEN' вместо !echo напрямую? - person VonC; 31.08.2011
comment
Да, возвращается строка !sh -c 'echo $GITHUB_TOKEN', а не значение переменной env. - person Zameer Manji; 31.08.2011
comment
@Zameer: ​​именно такой результат я получил на своей стороне. Другими словами, я не уверен, что это действительно работает. - person VonC; 31.08.2011
comment
Кто-нибудь может сказать мне, что такое github.token? Я слышал github.user, но какое значение имеет github.token? - person Santosh Kumar; 24.09.2012
comment
@SantoshKumar Как прокомментировано в stackoverflow.com/ вопросов/7129232/, GitHub больше не использует (для связи без ssh, то есть протоколов git:// или https://) простой токен, а токен OAuth 2: github.com/blog/: так что нет необходимости github.token в вашей конфигурации. - person VonC; 25.09.2012