dev_flow 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
- DevFlow: ROADMAP/git based develop flow control
2
- ===================================================
1
+ DevFlow: ROADMAP/git based development flow control
2
+ =====================================================
3
3
 
4
4
  WARNING: Pre-alpha implementation for internal use only.
5
5
 
6
- Pre-Requirement
7
- -----------------
6
+ Requirement
7
+ ------------------
8
8
 
9
- - A Bash command line console (cygwin is supported)
9
+ - A Bash compatible console (cygwin is supported)
10
10
  - A workable git installation and `git` command in the path
11
11
  - Ruby 1.9.x
12
12
 
@@ -18,27 +18,30 @@ Install
18
18
  Work Flow
19
19
  -------------
20
20
 
21
- Under you development working directory:
21
+ Under your git working directory:
22
22
 
23
- 1. Write a `ROADMAP` file in a specified format
24
- 2. (Optional) create `members.yml` file define known developers
23
+ 1. Write a `ROADMAP` file in the specified format
24
+ 2. (Optional) create `config/members.yml` file define known developers
25
25
  2. Run `dw` command
26
26
 
27
- Sub-commands for typical work flow jobs are:
27
+ Sub-commands for typical development working flow jobs are:
28
28
 
29
29
  $ dw [info] # show task information
30
30
 
31
+ $ dw switch [branch] # switch to branch, or list workable branches to switch to
32
+ ($ dw s [branch] # alias of switch)
33
+
31
34
  $ dw progress 80 # mark the task as completed at 80 percent
32
- $ dw pg 80 # same as progress
35
+ ($ dw pg 80 # same as progress)
33
36
 
34
37
  $ dw complete # mark that the implemention is completed
35
38
 
36
- $ dw close # this command is for project leader only, it will close the current task,
37
- # merge it into `develop` trunk and delete the git branch both
38
- # locally and remotely.
39
+ $ dw close # this command is for project leader only, it will
40
+ # mark the current task closed, merge it into `develop` trunk
41
+ # and delete the git branch both locally and remotely.
39
42
 
40
- $ dw release # like close but for release branch only.
41
- # the change will be merged into both `develop` and `master` branch.
43
+ $ dw release # like close but for release branch only. the change will
44
+ # be merged into both `develop` and `master` branch.
42
45
 
43
46
  More commands may plug in later.
44
47
 
@@ -53,9 +56,7 @@ See more options by issue
53
56
 
54
57
  $ dw -h
55
58
 
56
- or
57
-
58
- $ dw --help
59
+ (or `dw --help`)
59
60
 
60
61
  ### Information Header
61
62
 
@@ -79,13 +80,13 @@ treated as information header. Which should be in YAML format and should at leas
79
80
 
80
81
  If you define `year` in the header, you can write date in `mm/dd` format instead
81
82
  of `yyyy/mm/dd`. Usually you should define developers in a separate `members.yml` file,
82
- but you can define extra members in the header area too (usually for who only join to
83
+ but you can define extra `members` in the header area too (usually for who only join to
83
84
  one or few projects).
84
85
 
85
86
  ### Team and Leader
86
87
 
87
88
  Leader has a higher priority than team members, only leader can edit roadmap,
88
- close a task branch, and make a release, etc.
89
+ close a task branch, and make a release.
89
90
 
90
91
  If you also defines `supervisor`, `moderator`, they can update the roadmap too,
91
92
  but can not close or release a branch.
@@ -132,18 +133,20 @@ If the task need more than one resources use ; to separate them.
132
133
 
133
134
  ### Git Branching Models
134
135
 
135
- - `master`, `develop`, `staging` and `production` branches are **trunks**. Code implementation
136
- and modification should be done in non-trunk branches and merged into trunks according the following roles.
136
+ - `master`, `develop` branches are **trunks**.
137
+
138
+ You should modify code only in non-trunk branches and merge your change into trunks
139
+ according the following roles.
137
140
 
138
- - The `master` trunk is a production ready branch, `develop` is the **integration** branch
139
- that contains latest code of completed feature that passed all integration test.
141
+ - The `master` trunk is a production ready branch
140
142
 
141
- - Development branches (**task branch**) should stem from `develop` often, and merged
142
- back into `develop` trunk as soon as the implementation complete and passed all unit and
143
- integration tests.
143
+ - `develop` is the **integration** trunk that contains latest code of completed
144
+ features that _passed_all_integration_ tests.
144
145
 
145
- - Release branches is purely for code review, test and necessary bug fix, after pass all of that,
146
- they will be merged into both `develop` and `master` trunk, and a `release-xxx` tag will be attached.
146
+ - You write programs under **task branches** that created from `develop`. You should
147
+ use `dw` often to merge newest changes from `develop` trunk.
148
+
149
+ Ensure all tests pass before you `dw complete` your branch.
147
150
 
148
151
  ### Semantic Versioning and Special Tasks
149
152
 
@@ -159,42 +162,51 @@ branches will merged into `master` trunk.
159
162
  in the development flow (for example event for team code review,
160
163
  customer acceptance review, etc.), but do not affect version numbers, so do other tasks.
161
164
 
162
- Sometimes you may want to use 'prepare releases' such as `release_v0.1a`, `release_v0.1b`,
163
- avoid sandwich tasks between prepare releases and releases.
165
+ Sometimes you may want to use 'prepare releases' such as `release_v0.1a`,
166
+ `release_v0.1b`, avoid sandwich tasks between prepare releases and releases.
164
167
 
165
168
  Local Configuration
166
169
  ---------------------
167
170
 
168
- Default is stored in `.dev_flow` file and will be set to `git`'s ignore list (`.gitignore`)
169
- (so these settings only affect your local working directory).
171
+ Default is stored in `.dev_flow` file and will be set to `git`'s ignore list
172
+ (`.gitignore`), so these settings only affect your local working directory.
170
173
 
171
- Without this file `dw` will go into the initialization mode (by asking you some questions).
174
+ Without this file `dw` will go into the initialization mode
175
+ (by asking you questions about yourself and your git remote server).
172
176
 
173
177
  You can use `--local-config FILE` to store those information in an other file name.
174
178
 
175
- `.dev_flow` is also in yaml format and the most important key are `whoami` and `git_remote`,
176
- `whoami` specifies who is currently working on the local working directory,
177
- and `git_remote` defines witch git remote server to use (default is `origin`).
178
- With out `git_remote` the `dw` command will not try to communicate to remote git server.
179
+ `.dev_flow` is also in yaml format and the most important key are
180
+ `whoami` and `git_remote`, `whoami` specifies who is currently working on the
181
+ local working directory, and `git_remote` defines witch git remote server to use
182
+ (default is `origin`).
183
+
184
+ If `git_remote` defined, `dw` command will try to sync with the remote git server
185
+ when you use `dw`, from both remote branch matches your local branch, and `develop`
186
+ trunk. If you do not want to sync, specify the `--offline` (`-o`) option.
179
187
 
180
188
  Command Details
181
189
  -------------------
182
190
 
183
191
  - `dw init` default command if no `.dev_flow` file found.
184
192
 
185
- - `dw [info]` or `dw` without command will list the tasks and if the working directory
186
- is clean, let user chose to switch to working for known tasks.
193
+ - `dw [info]` or `dw` without command will list tasks defined in `ROADMAP`.
194
+ If current branch is `develop`, `dw` also ask you for switch to branches.
195
+
196
+ - `dw switch [branch]` will list a workable branches to choose to switch to,
197
+ but will only show tasks list if the working directory is not clean.
187
198
 
188
- - `dw progress 0-98` set task progress. `dw pg` is an alias of `dw progress`. You are
189
- encouraged to frequently use this command to store you changes to remote servers (typically
190
- several times a day).
199
+ - `dw progress 0-98` set task progress to 0-99. `dw pg` is an alias of `dw progress`.
200
+ You are encouraged to frequently use this command to push you changes to the
201
+ remote server (typically several times a day).
191
202
 
192
- - `dw complete` set task progress to 99 (complete a task), urge the leader to review/test and
193
- close it.
203
+ - `dw complete` set task progress to 99 (mark the task is completed), then you
204
+ should inform the leader to review/test and close it.
194
205
 
195
206
  - `dw close`/`dw release` close the task by the leader, or release it (to master trunk).
196
207
 
197
- - `dw update-roadmap` or `dw ur` used for update the roadmap (should only be used on `devleop` trunk).
208
+ - `dw update-roadmap` or `dw ur` used for update the roadmap, This command can only
209
+ be used on `devleop` trunk.
198
210
 
199
- - `dw cleanup` will delete local branches corresponding completed tasks (TODO).
211
+ - `dw clean` will delete local branches corresponding completed tasks.
200
212
 
data/bin/dw CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # vim: syn=ruby
3
3
 
4
- # $: << 'lib' # debug only
4
+ $: << 'lib' # debug only
5
5
 
6
6
  require "optparse"
7
7
  require "term/ansicolor"
@@ -12,28 +12,40 @@ options = {}
12
12
 
13
13
  optparse = OptionParser.new do |opts|
14
14
  opts.banner = "Usage: dw [options] [command]"
15
+ opts.separator ""
16
+ opts.separator "Commands:"
17
+ opts.separator " [info] : show list of tasks"
18
+ opts.separator " switch : show list of tasks, and tasks can swith to"
19
+ opts.separator " switch [branch]: directly switch to a branch"
20
+ opts.separator " s [branch]: alias of switch"
21
+ opts.separator " update-roadmap : on develop branch, update the roadmap file"
22
+ opts.separator " ur : alias of update-roadmap"
23
+ opts.separator " progress <percentage>: change the task progress to percentage (0-99)"
24
+ opts.separator " p <percentage> : alias of progress"
25
+ opts.separator " complete : complete a task, raise progress to 99"
26
+ opts.separator " close : close the task as a leader"
27
+ opts.separator " release : close a release task"
28
+ opts.separator " clean[up] : delete local branches that already completed"
29
+ opts.separator ""
30
+ opts.separator "Options:"
15
31
 
16
32
  options[:roadmap] = 'ROADMAP' # the roadmap file
17
- opts.on('-r ROADMAP_FILE', '--roadmap ROADMAP_FILE', 'use an other roadmap file') do |roadmap|
33
+ opts.on('-r FILE', '--roadmap FILE', 'use an other roadmap file') do |roadmap|
18
34
  options[:roadmap] = roadmap
19
35
  end
20
36
 
21
37
  options[:local_config] = '.dev_flow'
22
- opts.on('-l LOCAL_CONFIG', '--local-config LOCAL_CONFIG', 'use an other local configuration file') do |lc|
38
+ opts.on('-l FILE', '--local-config FILE', 'use an other local configuration file') do |lc|
23
39
  options[:local_config] = lc
24
40
  end
25
41
 
26
42
  options[:members_file] = 'members.yml' if File.exists? ('members.yml')
27
43
  options[:members_file] = 'config/members.yml' if File.exists? ('config/members.yml')
28
- opts.on('-m MEMBERS_FILE', '--members_file MEMBERS_FILE', 'use an other members file') do |mf|
44
+ opts.on('-m FILE', '--members_file FILE', 'use an other members file') do |mf|
29
45
  options[:members_file] = mf
30
46
  raise "the specified members file #{mf} is not exists." unless File.exists? mf
31
47
  end
32
48
 
33
- opts.on('-i', '--filter-tasks', 'show only tasks assigned to me') do
34
- options[:filter_tasks] = true
35
- end
36
-
37
49
  opts.on('-o', '--offline', 'do not use remote git server') do
38
50
  options[:offline] = true
39
51
  end
@@ -52,13 +64,13 @@ optparse.parse!(ARGV)
52
64
 
53
65
  # determine the command
54
66
  command = ARGV[0] || 'info'
55
- cmd_alias = {'pg' => 'progress', 'update-roadmap' => 'ur', 'clean' => 'cleanup'}
67
+ cmd_alias = {'pg' => 'progress', 'update-roadmap' => 'ur', 'clean' => 'cleanup', 's' => 'switch'}
56
68
  command = cmd_alias[command] if cmd_alias[command]
57
69
 
58
- if %w[info init complete progress close release ur update-roadmap cleanup clean].include? command
70
+ if %w[info init complete progress close release ur update-roadmap cleanup clean switch].include? command
59
71
  options[:command] = command
60
72
  else
61
- puts "unknown command #{command}".red
73
+ puts "Unknown command #{command}".red
62
74
  exit
63
75
  end
64
76
 
@@ -67,7 +79,7 @@ unless File.exists? (options[:roadmap])
67
79
  exit
68
80
  end
69
81
 
70
- # switch to init mode unless .dev_flow file exists
82
+ # enter init mode unless .dev_flow file exists
71
83
  unless command == 'init'
72
84
  unless File.exists? (options[:local_config])
73
85
  puts "Initializing your environment ... "
@@ -81,4 +93,10 @@ if command == 'release'
81
93
  command = 'close'
82
94
  end
83
95
 
96
+ if command == 'switch'
97
+ options[:switch] = true
98
+ options[:branch] = ARGV[1]
99
+ command = 'info'
100
+ end
101
+
84
102
  DevFlow.invoke!(options, command)
data/lib/dev_flow/app.rb CHANGED
@@ -72,6 +72,10 @@ module DevFlow
72
72
  @logger.info "[INFO] " + msg
73
73
  end
74
74
 
75
+ def debug msg
76
+ @logger.debug "[DEBUG] " + msg
77
+ end
78
+
75
79
  # helper function
76
80
  # ------------------------------
77
81
  def all_member_names
@@ -87,9 +91,10 @@ module DevFlow
87
91
  @members[@config["leader"]].display_name
88
92
  end
89
93
 
90
- def task
94
+ def task branch = nil
95
+ branch = @git.current_branch unless branch
91
96
  @roadmap.tasks.each do |task|
92
- return task if task.branch_name == @git.current_branch
97
+ return task if task.branch_name == branch
93
98
  end
94
99
  nil
95
100
  end
@@ -122,6 +127,10 @@ module DevFlow
122
127
  @roadmap.tasks.select {|task| task.progress == 99}
123
128
  end
124
129
 
130
+ def sync?
131
+ @config["git_remote"] and (not @config[:offline])
132
+ end
133
+
125
134
  # display informations
126
135
  # -----------------------
127
136
  def hr; "-"*76 end
@@ -188,21 +197,21 @@ module DevFlow
188
197
  # interactive methods with git remote server
189
198
  # ------------------------------------------------------
190
199
  def ask_rebase force = false
191
- return false if @config[:offline]
200
+ # return false unless sync? #if @config[:offline]
192
201
 
193
- unless force
194
- print "Rebase your wokring directory? [Y/n]:".bold.yellow
195
- ans = STDIN.gets.chomp!
196
- return false if ans == 'n'
197
- end
202
+ #unless force
203
+ # print "Rebase your wokring directory? [Y/n]:".bold.yellow
204
+ # ans = STDIN.gets.chomp!
205
+ # return false if ans == 'n'
206
+ #end
198
207
 
199
208
  # do the rebase:
200
- if @config["git_remote"]
209
+ if sync?
201
210
  info "Rebase you working directory from #{@config["git_remote"]}/devleop"
202
211
  @git.rebase! @config["git_remote"], 'develop'
203
212
  load_roadmap # load roadmap again
204
213
  else
205
- info "Git remote not defined, skip rebase."
214
+ warn "Git remote not defined, skip rebase."
206
215
  end
207
216
  end
208
217
 
File without changes
@@ -9,6 +9,7 @@ module DevFlow
9
9
  # whether I am working on a proper task branch
10
10
  current_task = self.task
11
11
  error "Not on a known task branch. Can not continue." unless current_task
12
+ error "Can not close task offline" unless sync?
12
13
 
13
14
  if current_task and (in_release? or current_task.branch_name =~ /^hotfix\_/)
14
15
  error "Use command 'release' to close a release/hotfix branch." unless @config[:release]
@@ -21,7 +22,7 @@ module DevFlow
21
22
  end
22
23
 
23
24
 
24
- self.ask_rebase true # force rebase
25
+ self.ask_rebase # force rebase
25
26
  puts hr
26
27
 
27
28
  # commit you current branch and push
@@ -31,10 +32,8 @@ module DevFlow
31
32
 
32
33
  info "commit progress"
33
34
  `git commit -am '#{message}'`
34
- if @config["git_remote"]
35
- info "push your progress to remote server"
36
- `git push #{@config["git_remote"]} #{current_task.branch_name}`
37
- end
35
+ info "push your progress to remote server"
36
+ `git push #{@config["git_remote"]} #{current_task.branch_name}`
38
37
 
39
38
  # goto develop branch and merge
40
39
  `git checkout develop`
@@ -64,10 +63,8 @@ module DevFlow
64
63
  info "Delete closed branch #{current_task.branch_name}"
65
64
  `git branch -d #{current_task.branch_name}`
66
65
 
67
- if @config["git_remote"]
68
- info "Delete closed branch remotely"
69
- `git push #{@config["git_remote"]} :#{current_task.branch_name}`
70
- end
66
+ info "Delete closed branch remotely"
67
+ `git push #{@config["git_remote"]} :#{current_task.branch_name}`
71
68
  end
72
69
 
73
70
  end # class
@@ -8,7 +8,6 @@ module DevFlow
8
8
  current_task = self.task
9
9
  error "Not on a known task branch. Can not continue." unless current_task
10
10
 
11
- info "Assigned resources for current task: " + current_task.resources.join(", ")
12
11
  info "Task resource list are #{current_task.resources.join(',')}, you are #{@config["whoami"]}"
13
12
  unless current_task.resources.include?(@config["whoami"])
14
13
  if i_have_power?
@@ -21,7 +20,8 @@ module DevFlow
21
20
  end
22
21
  end
23
22
 
24
- self.ask_rebase true # force rebase
23
+ error "Can not work offline for complete a task" unless sync?
24
+ self.ask_rebase
25
25
  puts hr
26
26
 
27
27
  # commit you current branch and push
@@ -31,10 +31,8 @@ module DevFlow
31
31
 
32
32
  info "Commit your progress"
33
33
  `git commit -am '#{message}'`
34
- if @config["git_remote"]
35
- info "push your progress to remote server"
36
- `git push #{@config["git_remote"]} #{current_task.branch_name}`
37
- end
34
+ info "Push your progress to remote server"
35
+ `git push #{@config["git_remote"]} #{current_task.branch_name}`
38
36
 
39
37
  # rewrite progress in ROADMAP file under develop trunk
40
38
  upload_progress! current_task, progress, true
@@ -1,11 +1,37 @@
1
1
  module DevFlow
2
2
  class Info < App
3
3
 
4
+ def update_task task
5
+ if task.progress > 0
6
+ # update your work directory
7
+ `git pull #{@config["git_remote"]} #{task.branch_name}` if sync?
8
+ else
9
+ # if the task not started yet, update progress
10
+ upload_progress!(task, 10)
11
+ end
12
+
13
+ ask_rebase
14
+ end
15
+
4
16
  def process!
5
17
  self.hello
6
18
 
7
19
  current_task = self.task
8
- self.ask_rebase if current_task or in_trunk?
20
+ if current_task or in_trunk?
21
+ self.ask_rebase
22
+ else
23
+ error "Not in a known task branch"
24
+ end
25
+
26
+ if current_task
27
+ # if complete, switch to develop
28
+ if current_task.is_completed?
29
+ warn "Your task is completed and closed, now swith to develop trunk"
30
+ `git checkout develop`
31
+ warn "Your may want `dw clean` your local working directory"
32
+ exit
33
+ end
34
+ end
9
35
 
10
36
  puts hr
11
37
 
@@ -21,26 +47,30 @@ module DevFlow
21
47
  # if work directory is clean, ready to switch
22
48
  if i_am_leader? and in_release? # concentrate
23
49
  puts "You are in a release branch, please release it as soon as possible."
24
- else # otherwise show switch options
25
- puts "You switch to other branches:".bold.yellow
26
- puts "Type #{0.to_s.bold} to switch to develop trunk.".bold.blue unless @git.current_branch == 'develop'
27
- puts "Simply press enter to keep working on the current branch."
28
- print @waiting.keys.join(", ") + ":"
29
-
30
- ans = STDIN.gets.chomp!
31
- if ans == 0.to_s
32
- switch_to! 'develop'
33
- `git pull #{@config["git_remote"]} develop` if @config["git_remote"]
34
- elsif @waiting[ans.to_i]
35
- switch_to! @waiting[ans.to_i].branch_name
36
-
37
- # update your work directory
38
- `git pull #{@config["git_remote"]} #{@waiting[ans.to_i].branch_name}` if @config["git_remote"] and @waiting[ans.to_i].progress > 0
50
+ else # otherwise show switch @config
39
51
 
40
- # if the task not started yet, update progress
41
- upload_progress!(@waiting[ans.to_i], 10) unless @waiting[ans.to_i].progress > 0
52
+ @config[:switch] = true if @git.current_branch == 'develop'
53
+ if @config[:switch] and @config[:branch]
54
+ switch_task = self.task @config[:branch]
55
+ error "Can not find ROADMAP task for branch #{@config[:branch]}" unless switch_task
56
+ switch_to! @config[:branch] if @config[:branch]
57
+ update_task switch_task
58
+ elsif @config[:switch]
59
+ puts "You can switch to other branches:".bold.yellow
60
+ puts "Type #{0.to_s.bold} to switch to develop trunk.".bold.blue unless @git.current_branch == 'develop'
61
+ print @waiting.keys.join(", ") + ":"
62
+ ans = STDIN.gets.chomp!
63
+ if ans == 0.to_s
64
+ switch_to! 'develop'
65
+ `git pull #{@config["git_remote"]} develop` if @config["git_remote"]
66
+ elsif @waiting[ans.to_i]
67
+ switch_to! @waiting[ans.to_i].branch_name
68
+ update_task @waiting[ans.to_i]
69
+ else
70
+ error "Invalid input #{ans}. Can not continue." if ans and ans.size > 0
71
+ end
42
72
  else
43
- error "Invalid input #{ans}. Can not continue." if ans and ans.size > 0
73
+ # dw show information only. quit.
44
74
  end
45
75
  end
46
76
  else # if the wd is not clean
@@ -22,9 +22,11 @@ module DevFlow
22
22
 
23
23
  info "commit your progress"
24
24
  `git commit -am '#{message}'`
25
- if @config["git_remote"]
25
+ if sync?
26
26
  info "push your progress to remote server"
27
27
  `git push #{@config["git_remote"]} #{current_task.branch_name}`
28
+ else
29
+ warn "your change did not pushed to the remote server."
28
30
  end
29
31
 
30
32
  # rewrite progress in ROADMAP file under develop trunk
@@ -2,15 +2,21 @@ module DevFlow
2
2
  class Ur < App
3
3
 
4
4
  def process!
5
- error "Not on develop trunk" unless @git.current_branch == 'develop'
5
+ error "Not on the develop trunk" unless @git.current_branch == 'develop'
6
6
  error "Only leader/moderator and supervisor can edit ROADMAP" unless i_have_power?
7
+
7
8
  #p @git.modified_files
8
9
  error "No change detected on #{@config[:roadmap]}" unless @git.modified_files.include? File.expand_path(@config[:roadmap])
9
10
 
10
- `git add .`
11
- `git commit -am 'update roadmap'`
12
- info "Push your change to the remote server"
13
- `git push #{@config["git_remote"]} develop` if @config["git_remote"]
11
+ `git add ROADMAP`
12
+ msg = ARGV[1] || 'update roadmap'
13
+ `git commit -am '#{msg}'`
14
+ if sync?
15
+ info "Push your change to the remote server"
16
+ `git push #{@config["git_remote"]} develop`
17
+ else
18
+ warn "Offline update for ROADMAP."
19
+ end
14
20
  end
15
21
 
16
22
  end # class
@@ -1,3 +1,3 @@
1
1
  module DevFlow
2
- VERSION = '0.2.4'
2
+ VERSION = '0.3.0'
3
3
  end
data/tags CHANGED
@@ -6,10 +6,13 @@
6
6
  !_TAG_PROGRAM_VERSION 5.8 //
7
7
  App lib/dev_flow/app.rb /^ class App$/;" c class:DevFlow
8
8
  Cleanup lib/dev_flow/commands/cleanup.rb /^ class Cleanup < App$/;" c class:DevFlow
9
+ Close lib/dev_flow/commands/close.rb /^ class Close < App$/;" c class:DevFlow
9
10
  Complete lib/dev_flow/commands/complete.rb /^ class Complete < App$/;" c class:DevFlow
11
+ DateName lib/dev_flow/date_name.rb /^module DateName$/;" m
10
12
  DevFlow lib/dev_flow.rb /^module DevFlow$/;" m
11
13
  DevFlow lib/dev_flow/app.rb /^module DevFlow$/;" m
12
14
  DevFlow lib/dev_flow/commands/cleanup.rb /^module DevFlow$/;" m
15
+ DevFlow lib/dev_flow/commands/close.rb /^module DevFlow$/;" m
13
16
  DevFlow lib/dev_flow/commands/complete.rb /^module DevFlow$/;" m
14
17
  DevFlow lib/dev_flow/commands/info.rb /^module DevFlow$/;" m
15
18
  DevFlow lib/dev_flow/commands/init.rb /^module DevFlow$/;" m
@@ -30,10 +33,10 @@ RoadMap lib/dev_flow/roadmap.rb /^ class RoadMap$/;" c class:DevFlow
30
33
  String bin/dw /^class String; include Term::ANSIColor end$/;" c
31
34
  Task lib/dev_flow/task.rb /^ class Task$/;" c class:DevFlow
32
35
  Task lib/dev_flow/task_console.rb /^ class Task$/;" c class:DevFlow
33
- UpdateRoadmap lib/dev_flow/commands/ur.rb /^ class UpdateRoadmap < App$/;" c class:DevFlow
36
+ Ur lib/dev_flow/commands/ur.rb /^ class Ur < App$/;" c class:DevFlow
34
37
  add_to_gitignore lib/dev_flow/commands/init.rb /^ def add_to_gitignore$/;" f class:DevFlow.Init
35
38
  all_member_names lib/dev_flow/app.rb /^ def all_member_names$/;" f class:DevFlow
36
- as_title lib/dev_flow/task_console.rb /^ def as_title header$/;" f class:DevFlow.Task
39
+ as_title lib/dev_flow/task_console.rb /^ def as_title header = ' '$/;" f class:DevFlow.Task
37
40
  ask_rebase lib/dev_flow/app.rb /^ def ask_rebase force = false$/;" f class:DevFlow.hr.hrb
38
41
  branches lib/dev_flow/girc.rb /^ def branches$/;" f
39
42
  config lib/dev_flow/girc.rb /^ def config$/;" f class:DevFlow
@@ -75,31 +78,36 @@ is_urgent? lib/dev_flow/task.rb /^ def is_urgent? # usually orange$/;" f cla
75
78
  is_workable? lib/dev_flow/task_console.rb /^ def is_workable?$/;" f class:DevFlow.Task
76
79
  last_task lib/dev_flow/roadmap.rb /^ def last_task$/;" f class:DevFlow.RoadMap
77
80
  leader_name lib/dev_flow/app.rb /^ def leader_name$/;" f class:DevFlow
81
+ load_roadmap lib/dev_flow/app.rb /^ def load_roadmap$/;" f class:DevFlow.App
78
82
  me lib/dev_flow/girc.rb /^ def me$/;" f
79
83
  modified_files lib/dev_flow/girc.rb /^ def modified_files$/;" f class:DevFlow.Girc
80
84
  new_branch! lib/dev_flow/girc.rb /^ def new_branch! branch, remote=nil$/;" f
85
+ new_version lib/dev_flow/app.rb /^ def new_version branch_name$/;" f class:DevFlow.hr.hrb
86
+ new_version spec/version_spec.rb /^def new_version branch_name, git_tags$/;" f
81
87
  parse lib/dev_flow/roadmap.rb /^ def parse file = nil$/;" f class:DevFlow.RoadMap
82
88
  parse lib/dev_flow/task.rb /^ def parse line, headers = {}$/;" f class:DevFlow.Task
83
- process lib/dev_flow/commands/info.rb /^ def process$/;" f class:DevFlow.Info
84
89
  process! lib/dev_flow/commands/cleanup.rb /^ def process!$/;" f class:DevFlow.Cleanup
90
+ process! lib/dev_flow/commands/close.rb /^ def process!$/;" f class:DevFlow.Close
85
91
  process! lib/dev_flow/commands/complete.rb /^ def process!$/;" f class:DevFlow.Complete
86
92
  process! lib/dev_flow/commands/info.rb /^ def process!$/;" f class:DevFlow.Info
87
93
  process! lib/dev_flow/commands/init.rb /^ def process!$/;" f class:DevFlow.Init
88
94
  process! lib/dev_flow/commands/progress.rb /^ def process!$/;" f class:DevFlow.Progress
89
- process! lib/dev_flow/commands/ur.rb /^ def process!$/;" f class:DevFlow.UpdateRoadmap
95
+ process! lib/dev_flow/commands/ur.rb /^ def process!$/;" f class:DevFlow.Ur
90
96
  pull! lib/dev_flow/girc.rb /^ def pull! remote = 'origin'$/;" f
91
97
  rebase! lib/dev_flow/girc.rb /^ def rebase! remote = 'origin', branch = 'develop'$/;" f
92
98
  remote_list lib/dev_flow/girc.rb /^ def remote_list$/;" f
93
- rewrite lib/dev_flow/roadmap.rb /^ def rewrite task_hash$/;" f class:DevFlow.RoadMap
99
+ rewrite! lib/dev_flow/roadmap.rb /^ def rewrite! task_hash$/;" f class:DevFlow.RoadMap
94
100
  stash! lib/dev_flow/girc.rb /^ def stash!$/;" f
95
101
  stash_pop! lib/dev_flow/girc.rb /^ def stash_pop!$/;" f
96
102
  switch_to! lib/dev_flow/app.rb /^ def switch_to! branch$/;" f class:DevFlow.hr.hrb
97
103
  task lib/dev_flow/app.rb /^ def task$/;" f class:DevFlow
98
104
  tasks_for_close lib/dev_flow/app.rb /^ def tasks_for_close $/;" f class:DevFlow
105
+ team_member_names lib/dev_flow/roadmap.rb /^ def team_member_names$/;" f class:DevFlow.RoadMap
99
106
  title lib/dev_flow/roadmap.rb /^ def title$/;" f class:DevFlow.RoadMap
100
- upload_progress! lib/dev_flow/app.rb /^ def upload_progress! task, progress, is_complete$/;" f class:DevFlow.hr.hrb
107
+ upload_progress! lib/dev_flow/app.rb /^ def upload_progress! task, progress, is_complete = false$/;" f class:DevFlow.hr.hrb
101
108
  user_name lib/dev_flow/app.rb /^ def user_name$/;" f class:DevFlow
102
109
  validate! lib/dev_flow/task.rb /^ def validate!$/;" f class:DevFlow.Task
103
110
  warn lib/dev_flow/app.rb /^ def warn msg$/;" f class:DevFlow
104
111
  wd_clean? lib/dev_flow/girc.rb /^ def wd_clean?$/;" f
105
112
  write_local_config lib/dev_flow/commands/init.rb /^ def write_local_config hash$/;" f class:DevFlow.Init
113
+ zh lib/dev_flow/date_name.rb /^ def self.zh from_date, to_date = DateTime.now$/;" F class:DateName
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev_flow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-12 00:00:00.000000000 Z
12
+ date: 2013-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: term-ansicolor
@@ -60,7 +60,7 @@ files:
60
60
  - examples/members.yml
61
61
  - lib/dev_flow.rb
62
62
  - lib/dev_flow/app.rb
63
- - lib/dev_flow/commands/cleanup.rb
63
+ - lib/dev_flow/commands/clean.rb
64
64
  - lib/dev_flow/commands/close.rb
65
65
  - lib/dev_flow/commands/complete.rb
66
66
  - lib/dev_flow/commands/info.rb
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  requirements: []
110
110
  rubyforge_project:
111
- rubygems_version: 1.8.25
111
+ rubygems_version: 1.8.24
112
112
  signing_key:
113
113
  specification_version: 3
114
114
  summary: a bundle of tools for ROADMAP/git based development flow control.