2013年7月5日金曜日

やっぱ最高!?容量無制限!非公開レポジトリも作れるgitBreak!

前回今話題のCodeBreak(gitBreak)を使ってみた.でgitBreakについて簡単に紹介しましたが、問題となってた「いちいちパスワード入力とかが面倒だね!」ってのをshellで解決したので公開しちゃいます。

普通にレポジトリをクローンしていじるとこからやるとこんなかんじだよね。
登録した

$ vi test.html
$ cat test.html
なんとかしたぜ!!
$ git add .
$ git commit -m "push test"
[master da2fb02] push test
 1 file changed, 1 insertion(+), 5 deletions(-)
jumbosmba:test hanedakentarou$ git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 301 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Updating references: 100% (1/1)
To https://git.codebreak.com/kenhane/test.git
   1341891..da2fb02  master -> master  

まぁそれではだめなんですよ、いざファイルを共有しようとする時
他の端末からcloneしてやるとなぜかUsernameとPasswordを求められる。
gitの情報が違うからか?なんでかな。。。

これは仕様なのか?作業効率が超下がるわ!!

しかしそんな夜も今日で終わり、この問題は解決できた!

解決してくれたのは。。。expectで対話型シェル - runny egg's diary

世の中にはexpectコマンドなんていう素敵なものがあった!!

そこで上記ソースを元に書いてみた。



#!/bin/sh                  

expect -c '
set timeout 20  
spawn git push origin master         
expect "Username: " 
 send "YOUR YOUSERNAME\r"     
expect "Password: " 
 send "PASSWORD\r"   
interact 
' 

YOUR YOUSERNAMEにあなたのgitbreakのユーザーネーム PASSWORDにパスワードを入れてください。

 やってることは対話型のコマンドexpect -cを使って対話状態にする、 その中でspawnにより実行コマンドを出力、 表示される文字をexpectで取得し、してであればsendで値を出力、 expectには正規表現も使えるので結構便利だね。

 とりあえずこれでgitBreakの問題は解決したし!共有も楽になるし! 最高のツールになってしまったわけだ! もりもり使っていくぞー!!

実は実用的なshellを書くのは初めてだったりするので勉強になったなー、どんどん書いていきたいな^u^

0 件のコメント:

コメントを投稿

ShareThis