todo-git.shを少し改良した

todo-git
======================
todo.txtでプログラミングの開発を管理している場合に向いています。　　

redmineなどでプロジェクトを管理して場合は向きません。

todo.txtでTODOを作成します。　　

そのTODOを元にgit flowでブランチを作成します。

featureとreleaseブランチを作成することができます。

使い方
------
### インストール###
インストールは、パスの通ったところにtodo-git.shファイルを置きます。  

chmod +x todo_git.sh  



### 設定 ###
todo.txtを読み込んでgitのブランチを作成するので、テキストエディタで
todo-git.shを開いて、todo.txtのパスを登録します。

バックアップファイルはDefaultではホームに作成します。

###How to do ###

+ todo.txtの最初の単語はブランチ名になります。
+ 途中で操作を中止したい場合、文字を入力してください。

>todo.sh add "new todo idea"   `---> new todo set`    
>todo-git.sh -s                         `---> "git flow feature start"` 

>...  (show some massage)

>1.new: todo idea`                     ----> inital word should be branch name`

>Select Number >>> 1 `            ----> new feature branch (feature/new) is made`

+ release branchを切るとき

>todo-git.sh -r

>... (show some massage and tag list)

+ release branchを終わるとき

>todo-git.sh -o

>... (show list)

>---> select number:

<参考>　　
http://momiji-mac.com/wp/2012/08/08/todo-gitの流れを書いてみました/


パラメータの解説
----------------

    ./todo_git.sh  -opt


+   `s` :  
    git flow feature start ...

+   `f` :  
    git flow feature finish ...

+   `e` :  
    edit todo.txt directly

+   `l` :  
    show todo list  
(リストに空行がある場合、自動的に削除します)　　

+   `r` :  
    git flow release start ... 
    select "q" --> cancel

+   `o` :  
    git flow release finish ...

+   `d` :  
    delete item of todo list ...

+   `x` :  
    exchange items from todo list ...


---
=== 追加項目 ===

+  `b` : sub-Feature branch start
  
+  `m`: sub-Feature branch marge and delete
  
+  `u`: sub-Feature branch just delete (= un-marge)

---
+  追加項目の説明：sub-Featureという概念を導入した。
		
	featureブランチ（test）で作業していて、新しい試したいアイデアを思いついたとする。

	<< 通常 >>

	(git)-[feature/test] > git checkout -b newTest

	(git)-[newTest] >

	<作業する…>
	
	<feature branch にマージし、戻りたい場合>

	(git)-[newTest] > git checkout feature/test
	
	(git)-[feature/test] > git marge newTest
	
	(git)-[feature/test] > git branch -d newTest
	
	<< sub-Featureを使う場合 >>
	
	(git)-[feature/test] > todo_git.sh -b newTest
	
	(git)-[newTest] >

	<作業する…>
	<feature branch に戻りたい場合>

	(git)-[newTest] > todo_git.sh -m
	
	merge and delete branch
	
	1 develop
	
	2 feature/subTest
	
	3 master
	
	4 * newTest
	
	Select feature branch --> 2   <--戻りたいfeatureを選択する
	
	... massage ...
	
	 
	つまり、margeと要らなくなったブランチを削除します。
	
	個人的ソフト開発において”チケット駆動開発モドキ”を実現するためのシェルスクリプト。

Download:todo-git

 

Redmineを導入すればもっと高度で、リッチなインターフェイスでチケット駆動開発が可能であるが、 個人的ソフト開発においては、そこまで手を広げる必要はまずない。

また、実際にはプロジェクトごとにTODOを書きだしておいて、開発すればだいたいは用をなす。

todo.txtというテキストとシェルスクリプトの TODOソフトがあるが、入力が簡単で動作が軽い。

一方、近頃はバージョン管理にgit flowを利用し、コードの管理・メンテナンスが便利になってきている。新しい機能を追加する場合、featureブランチを切ることが多いと思われる。

どちらもシェルを使用しますので、マウスを使わず便利です。

そこで、todo.txtとgit flowを融合させ、チケット駆動開発モドキを実現させる。

 

＜インストール方法＞

todo.txtとgit flowをインストールする
todo_gitダウンロードしパスの通ったところに置く
todo_git.shはシェルスクリプトなので、実行できるようにchmod -xしておく
todo_git.shをエディターで開き、TODOFILEとBACKUPFILEを指定する
todo.txtにtodoを登録します
git flowでプロジェクトを初期化します
 

＜使用方法＞ ...実際はインデントされません

◎　branchTestはgitリポ

 

>cd ~/branchTest
>$ls
>./ ../ .git/ hihi

 

◎　ヘルプ表示で必要なオプションを表示します。

◎　基本的に何かしらのオプションが必要です。

 

>$todo-git.sh -h

*** Help ***
Usage: todo_git.sh -[sflerodxph] [todo list number]

ex)
> todo_git.sh -s 　　　---> 番号がわからない場合
> todo_git.sh -s 1 　　 --->予め番号がわかっている場合 

OPTION
s: git flow feature Start
f: git flow feature Finish
e: Edit todo.txt
l: show todo List
r: git flow Release start
o: git flow Release finish
d: Delite item from todo list
x: items order eXchange
p: show list of Project
h: show help

 

◎　todo.txt のlistを表示します。

 

>$todo-git.sh -l

—————————–
Git branch make from todo.txt
—————————–

———————-
back up file is Found
———————-

show list
1.hhihi : dfjap
2.haohf : dhaohfao
3.poda : wweqf

 

 

◎　feature branchを切る場合

 

>$todo-git.sh -l

git flow feature start
.git exist

1.hhihi : dfjap
2.haohf : dhaohfao
3.poda : wweqf
4.hoge : +todotxt

Select number >>> 4
Switched to a new branch ‘feature/hoge’

 

 

◎　todo.txtのリストで番号がわかっている場合は、以下のようにもできます。

 

>$todo-git.sh -l　４

 

◎　feature branchを終了する場合
(featureブランチと同じtodoの前に">>>"がついています)

 

>todo-git.sh -f

git flow feature finish
1.hhihi : dfjap
2.haohf : dhaohfao
3.poda : wweqf
4.>>>hoge : +todotxt

Select number >>> 4
>>>hoge

 

◎　release branchを切る場合
(参考にtagのリストが表示されます)

 

>todo-git.sh -r

git flow release start
tag list

0.1
0.2
0.3

set the tag —>0.4
Switched to a new branch ‘release/0.4′

4 >>>0.4:(release)
TODO: 4 added.

 

◎　release branchを終了する場合
(releaseブランチには">>>tag:(release)"が表示されています)

 

>todo-git.sh -o

git flow release finish
1.hhihi : dfjap
2.haohf : dhaohfao
3.poda : wweqf
4. >>>0.4:(release) : … …

Select number –> 4

 

◎　develop branchに戻ります

### 追加項目 ####

todo-git.sh久しぶりにアップデートした。

変更点：sub-Featureという概念を導入した。

featureブランチ（test）で作業していて、新しい試したいアイデアを思いついたと

する。

<< 通常 >>

>(git)-[feature/test] > git checkout -b newTest

(git)-[newTest] >

<作業する…>
<feature branch にマージし、戻りたい場合>

>(git)-[newTest] > git checkout feature/test
>(git)-[feature/test] > git marge newTest
>(git)-[feature/test] > git branch -d newTest

 

<< sub-Featureを使う場合 >>
>(git)-[feature/test] > todo_git.sh -b newTest
>(git)-[newTest] >

<作業する…>
<feature branch に戻りたい場合>

>(git)-[newTest] > todo_git.sh -m
>merge and delete branch
>
>1 develop
>
>2 feature/subTest
>
>3 master
>
>4 * newTest
>
>Select feature branch --> 2   <--戻りたいfeatureを選択する
>
>... massage ...

 

つまり、margeと要らなくなったブランチを削除します。

 

<feature branch に戻りたいが、margeしたくない場合>

注意！試しのブランチはコマンド一発で削除されます！

>(git)-[feature/test] > todo_git.sh -b newTest

>(git)-[newTest] >

<作業する…>
<feature branch に戻りたい場合>

>(git)-[newTest] > todo_git.sh -u <-- ここ！


ライセンス
----------
Copyright 2012 momiji-mac.com. All rights reserved.

Licensed under the [BSD License][BSD]  
Distributed under the [MIT License][mit].  

ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。

ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、momiji-mac.comの名前またはコントリビューターの名前を使用してはならない。
本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、 損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか（過失その他の）不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した（代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない）直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。