hub でディレクトリごとに GitHub アカウントを使い分ける方法
TL;DR
- hub 2.x 以降, 設定ファイルは環境変数
GH_CONFIG
を参照している - これをディレクトリごとに切り替えるために direnv を入れる
- 切り替えたいディレクトリで
echo export GH_CONFIG=$(pwd)/.hub > .envrc
しておきあとは hub を普通に使うだけ
hub でディレクトリごとに GitHub アカウントを使い分ける
仕事と自宅で別の GitHub アカウントを使う場合など, hub が store しておく token を複数持ちたい場合がありますよね.
そんなときに, 以下の方法を取るとディレクトリごとに任意の GitHub token を選択することができ, 公開リポジトリにうっかり会社のアカウントで hub pull-request
して失敗することがなくなります.
方法
以下は golang で書かれた hub 2.x の話になるので, まず hub 2.x を入れます.
brew install --HEAD hub
hub は取得した token を ~/.config/hub
に保存します. そこの処理を見てみましょう.
func configsFile() string {
configsFile := os.Getenv("GH_CONFIG")
if configsFile == "" {
configsFile = defaultConfigsFile
}
return configsFile
}
defaultConfigFile は defaultConfigsFile = filepath.Join(os.Getenv("HOME"), ".config", "hub")
と定義されています. これが ~/.config/hub
なのですが, 環境変数 GH_CONFIG
がそれに先んじて参照されているため, GH_CONFIG
に適当なファイルパスを指定しておけば良さそうです.
こういうときに便利なのが direnv です.
導入方法と紹介は以下の記事に詳しくあります.
これは, ディレクトリごとに任意の環境変数を設定できる優れものです.
今回の場合だと GitHub アカウントを変えたいディレクトリで,
echo export GH_CONFIG=$(pwd)/.hub > .envrc
とすると, ディレクトリ直下に .envrc
ができ環境変数 GH_CONFIG
が読み込まれます. あとは hub pull-request
すると user_name, password を聞かれるので, 設定したいアカウント情報を入力するとそのアカウントで Pull Request が作成されます
今回の設定だと .hub
に GitHub token が保存されます. 間違って commit に含まれないように .hub
を共通の .gitignore
に追加しておきましょう. また, このやり方だと毎回 token を生成してしまうので, ~/.config/hub_second
などのようにアカウントごとに特定の名前を付けるようにして,
echo export GH_CONFIG=$HOME/.config/hub_second > .envrc
というふうに生成するのも良いでしょう.
Author And Source
この問題について(hub でディレクトリごとに GitHub アカウントを使い分ける方法), 我々は、より多くの情報をここで見つけました https://qiita.com/sqrtxx/items/7765c8f434644904fa31著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .