入手先
開発環境
- Windows XP Pro SP3 32bit
- cmd.exe
- Git for Windows 1.9.4
- Hubコマンド
- git version 1.9.4.msysgit.1
- hub version 2.2.8
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
のほう。
user
とoauth_token
の値を任意のユーザ名とAccessTokenに書き換えると、そのユーザのリポジトリを作成できるようになる。
各アカウントのhubファイルを作成する
複数アカウントで使うためには、各アカウントでAccessTokenを生成する必要がある。
hubコマンドだけで可能である。
- hubファイルをリネームする
- 再び
hub create
などでユーザ名とパスワードを入力する - 再び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
すると、以下のように選択できるようになった。
ここで 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%"
部分を任意のものに変更すればいいだけ。
所感
ユーザ名を二箇所で修正せねばならないのが面倒。