読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Hubコマンドで複数アカウントを使い分けたい

前回のつづき Hubコマンド複数アカウントしてみた。

入手先

GitHub MEGA

開発環境

hubで認証

前回、コマンド実行したら初回だけユーザ名とパスワードを要求された。

どうやらそのときにAccessTokenを作成したらしい。.config\hub設定ファイルができる。

GitHubAPIのauthorizationsならできるっぽい。そのためのパスワード入力だったのだろう

なので、2回目以降、hubはAccessTokenを介して通信していると思われる。

hubファイル

設定ファイル。

hubを解凍したルートディレクトリと、Windowsのユーザ名ディレクトリ配下の2箇所にできていた。

  • \hub-windows-386-2.2.8\bin.config\hub
  • C:\Documents and Settings\Administrator.config\hub

\hub-windows-386-2.2.8\bin\.config\hubの内容は以下の通り。

---
github.com:YourGitHubUsername
- oauth_token: hub for YourGitHubUsername@YourComputerName
  user: YourGitHubUsername

C:\Documents and Settings\Administrator\.config\hubの内容は以下の通り。

github.com:
- user: YourGitHubUsername
  oauth_token: 0123456789abcdefghijklmnopqrstuvwxyz0123
  protocol: https

重要なのは、C:\Documents and Settings\Administrator\.config\hubのほう。

useroauth_tokenの値を任意のユーザ名とAccessTokenに書き換えると、そのユーザのリポジトリを作成できるようになる。

各アカウントのhubファイルを作成する

複数アカウントで使うためには、各アカウントでAccessTokenを生成する必要がある。

hubコマンドだけで可能である。

  1. hubファイルをリネームする
  2. 再びhub createなどでユーザ名とパスワードを入力する
  3. 再びhubファイルができる

これをアカウントの数だけくりかえす。

リネームするときはhub_Usernameのようにするとわかりやすいだろう。

たとえば以下のようなファイル構成になる。

  • .config
    • hub
    • hub_User1
    • hub_User2
    • hub_User3
    • hub_User4

hubファイルに複数書いてみる

hubファイルの仕様がわからないので何ともいえない。

とりあえず各アカウントの内容をそのままhubファイルに追記してみる。

たとえば以下のような感じ。

github.com:
- user: User1
  oauth_token: 0123456789abcdefghijklmnopqrstuvwxyz0123
  protocol: https
github.com:
- user: User2
  oauth_token: 1123456789abcdefghijklmnopqrstuvwxyz0123
  protocol: https
github.com:
- user: ytyaru
  oauth_token: 2123456789abcdefghijklmnopqrstuvwxyz0123
  protocol: https
github.com:
- user: User4
  oauth_token: 3123456789abcdefghijklmnopqrstuvwxyz0123
  protocol: https

すると、以下のように選択できるようになった。

1

ここで 3 を入力してEnterキー押下すると送信先がytyaruに決定する。

Host先の選択を自動化したい

でも、いちいち入力が面倒。ミスるかもしれない。バッチファイルで自動化できないか。

hubコマンドにはhubファイルを指定するようなコマンドは多分ないと思う。

type hub_user1 > hubのコマンドで上書きしてしまえばいいか。 ユーザを変えたいときはtype hub_user2 > hubとかにすればいい。

問題点

  • 毎回ファイル書込が発生させてしまう
  • バッチファイルを書き換えるくらいなら素直に選択したほうが楽では?

実行

実行するとき、以下の引数を確認する必要がある。

gitは以下の3つ。

  • SET USER_NAME=YourUsername
  • SET USER_MAIL=YourUsername@domain.com
  • SET SSH_HOST=github.com.YourUsername

hubは以下の5つ。

  • set hub=C:\root\tool\System\hub-windows-386-2.2.8\bin\hub.exe
  • set hub_file=C:\Documents and Settings\Administrator.config\hub
  • set hub_user1=C:\Documents and Settings\Administrator.config\hub_user1
  • set hub_user2=C:\Documents and Settings\Administrator.config\hub_user2
  • type "%hub_user1%" > "%hub_file%"

一度hubファイルを作成してしまえば、あとはtype "%hub_user1%" > "%hub_file%""%hub_user1%"部分を任意のものに変更すればいいだけ。

所感

ユーザ名を二箇所で修正せねばならないのが面倒。