TicGit-ng 1.0.2.11 → 1.0.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ticgit-ng/base.rb +45 -9
- data/lib/ticgit-ng/cli.rb +19 -3
- data/lib/ticgit-ng/command/assign.rb +2 -1
- data/lib/ticgit-ng/command/init.rb +20 -0
- data/lib/ticgit-ng/command.rb +1 -0
- data/lib/ticgit-ng/version.rb +1 -1
- data/lib/ticgit-ng.rb +5 -1
- metadata +5 -4
data/lib/ticgit-ng/base.rb
CHANGED
@@ -10,6 +10,19 @@ module TicGitNG
|
|
10
10
|
|
11
11
|
def initialize(git_dir, opts = {})
|
12
12
|
@git = Git.open(find_repo(git_dir))
|
13
|
+
@logger = opts[:logger] || Logger.new(STDOUT)
|
14
|
+
|
15
|
+
#This is to accomodate for edge-cases where @logger.puts
|
16
|
+
#is called from debugging code.
|
17
|
+
unless @logger.respond_to?(:puts)
|
18
|
+
def @logger.puts str
|
19
|
+
self.info str
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
@last_tickets = []
|
24
|
+
@init=opts[:init]
|
25
|
+
|
13
26
|
proj = Ticket.clean_string(@git.dir.path)
|
14
27
|
|
15
28
|
@tic_dir = opts[:tic_dir] || "~/.#{which_branch?}"
|
@@ -19,15 +32,23 @@ module TicGitNG
|
|
19
32
|
@logger = opts[:logger] || Logger.new(STDOUT)
|
20
33
|
@last_tickets = []
|
21
34
|
|
22
|
-
#expire @tic_index and @tic_working if it mtime is older than
|
35
|
+
#expire @tic_index and @tic_working if it mtime is older than
|
36
|
+
#git log. Otherwise, during testing, if you use the same temp
|
37
|
+
#directory with the same name, deleting it and recreating it
|
38
|
+
#to test something, ticgit would get confused by the cache from
|
39
|
+
#the previous instance of the temp dir.
|
23
40
|
if File.exist?(@tic_working)
|
24
41
|
cache_mtime=File.mtime(@tic_working)
|
25
|
-
gitlog_mtime=git.gblob(which_branch?).log(1).map {|l| l.committer.date }[0]
|
42
|
+
(gitlog_mtime=git.gblob(which_branch?).log(1).map {|l| l.committer.date }[0]) rescue reset_cache
|
43
|
+
|
26
44
|
#unless (cache_mtime > gitlog_mtime.-(20) and cache_mtime <= gitlog_mtime) or (cache_mtime > gitlog_mtime.+(30) and cache_mtime >= gitlog_mtime)
|
27
|
-
|
28
|
-
|
29
|
-
|
45
|
+
#FIXME break logic out into several lines
|
46
|
+
#FIXME don't bother resetting if gitlog_mtime.to_i == 0
|
47
|
+
if needs_reset?( cache_mtime, gitlog_mtime ) and !cache_mtime==gitlog_mtime
|
48
|
+
puts "Resetting cache" unless gitlog_mtime.to_i == 0
|
49
|
+
reset_cache
|
30
50
|
end
|
51
|
+
|
31
52
|
end
|
32
53
|
|
33
54
|
# load config file
|
@@ -313,7 +334,15 @@ module TicGitNG
|
|
313
334
|
|
314
335
|
unless (bs.include?(which_branch?) || bs.include?(which_branch?)) &&
|
315
336
|
File.directory?(@tic_working)
|
316
|
-
|
337
|
+
unless @init
|
338
|
+
puts "Please run `ti init` to initialize TicGit-ng for this repository before running other ti commands."
|
339
|
+
exit
|
340
|
+
else
|
341
|
+
puts "Initializing TicGit-ng"
|
342
|
+
init_ticgitng_branch(
|
343
|
+
git.lib.branches_all.map{|b| b.first }.include?(which_branch?)
|
344
|
+
)
|
345
|
+
end
|
317
346
|
end
|
318
347
|
|
319
348
|
tree = git.lib.full_tree(which_branch?)
|
@@ -331,7 +360,7 @@ module TicGitNG
|
|
331
360
|
end
|
332
361
|
|
333
362
|
def init_ticgitng_branch(ticgitng_branch = false)
|
334
|
-
@logger
|
363
|
+
@logger << 'creating ticgit-ng repo branch'
|
335
364
|
|
336
365
|
in_branch(ticgitng_branch) do
|
337
366
|
#The .hold file seems to have little to no purpose aside from helping
|
@@ -390,11 +419,18 @@ module TicGitNG
|
|
390
419
|
|
391
420
|
def reset_cache
|
392
421
|
#@state, @tic_index, @tic_working
|
422
|
+
#A rescue is appended to the end of each line because it allows
|
423
|
+
#execution of others to continue upon failure, as opposed to
|
424
|
+
#a begin;rescue;end segment.
|
425
|
+
FileUtils.rm_r File.expand_path(@tic_working) rescue nil
|
393
426
|
FileUtils.rm File.expand_path(@state) rescue nil
|
394
427
|
FileUtils.rm File.expand_path(@tic_index) rescue nil
|
395
|
-
FileUtils.
|
428
|
+
FileUtils.mkdir_p File.expand_path(@tic_working) rescue nil
|
396
429
|
@state=nil
|
397
|
-
|
430
|
+
end
|
431
|
+
|
432
|
+
def needs_reset? cache_mtime, gitlog_mtime
|
433
|
+
((cache_mtime.to_i - gitlog_mtime.to_i) > 120) or ((gitlog_mtime.to_i - cache_mtime.to_i) > 120)
|
398
434
|
end
|
399
435
|
|
400
436
|
end
|
data/lib/ticgit-ng/cli.rb
CHANGED
@@ -21,13 +21,23 @@ module TicGitNG
|
|
21
21
|
|
22
22
|
def initialize(args, path = '.', out = $stdout)
|
23
23
|
@args = args.dup
|
24
|
-
|
24
|
+
|
25
|
+
#set @init if one of the args is 'init'
|
26
|
+
#this needs to be done because initialization of the ticgit branch must be done before
|
27
|
+
#the branch is loaded, but because of the way commands are modularized this must be done
|
28
|
+
#outside of and before the init.rb file itself is called (init.rb is where we would
|
29
|
+
#normally put the code for such a command).
|
30
|
+
args.include?( 'init' ) ? (@init=true) : (@init=false)
|
31
|
+
#@init= ((args[0][/init/]=='init') rescue false)
|
32
|
+
#@init= ((args[0][/init/]=='init') or (args[1][/init/]=='init') rescue false)
|
33
|
+
|
34
|
+
@tic = TicGitNG.open(path, {:keep_state => true, :init => @init, :logger => out })
|
25
35
|
@options = OpenStruct.new
|
26
36
|
@out = out
|
27
37
|
|
28
38
|
@out.sync = true # so that Net::SSH prompts show up
|
29
39
|
rescue NoRepoFound
|
30
|
-
puts "No repo found"
|
40
|
+
out.puts "No repo found"
|
31
41
|
exit
|
32
42
|
end
|
33
43
|
|
@@ -64,7 +74,13 @@ module TicGitNG
|
|
64
74
|
exit 1
|
65
75
|
end
|
66
76
|
|
67
|
-
|
77
|
+
#FIXME
|
78
|
+
#this is a dirty hack that needs to be fixed
|
79
|
+
if args.include?('list') and args.include?('init')
|
80
|
+
@action = 'list'
|
81
|
+
else
|
82
|
+
@action = args.shift
|
83
|
+
end
|
68
84
|
end
|
69
85
|
|
70
86
|
def usage(args = nil)
|
@@ -10,7 +10,8 @@ module TicGitNG
|
|
10
10
|
# ti assign -u {name} {1} (assign specified ticket to specified user)
|
11
11
|
module Assign
|
12
12
|
def parser(opts)
|
13
|
-
opts.banner = "Usage: ti assign [options] [ticket_id]"
|
13
|
+
opts.banner = "Usage: ti assign [options] [ticket_id]\n"+
|
14
|
+
"Note: to assign to nobody: ti assign -u ''"
|
14
15
|
opts.on_head(
|
15
16
|
"-u USER", "--user USER", "Assign the ticket to this user"){|v|
|
16
17
|
options.user = v
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module TicGitNG
|
2
|
+
module Command
|
3
|
+
module Init
|
4
|
+
def parser o
|
5
|
+
o.banner= "Usage: ti init"
|
6
|
+
end
|
7
|
+
def execute
|
8
|
+
@tic.read_tickets
|
9
|
+
=begin
|
10
|
+
#Initialization has to happen earlier in the code so this code stands
|
11
|
+
#as an example, when `ti init` is called, initialization is handled by
|
12
|
+
#base.rb:354 (at the time of writing this).
|
13
|
+
tic.base.init_ticgitng_branch(
|
14
|
+
git.lib.branches_all.map{|b| b.first }.include?(which_branch?)
|
15
|
+
)
|
16
|
+
=end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/ticgit-ng/command.rb
CHANGED
@@ -22,6 +22,7 @@ module TicGitNG
|
|
22
22
|
register 'State', 'Change state of a ticket', 'state'
|
23
23
|
register 'Tag', 'Modify tags of a ticket', 'tag'
|
24
24
|
register 'Sync', 'Sync tickets', 'sync'
|
25
|
+
register 'Init', 'Initialize Ticgit-ng', 'init'
|
25
26
|
|
26
27
|
def self.get(command)
|
27
28
|
if mod_name = COMMANDS[command]
|
data/lib/ticgit-ng/version.rb
CHANGED
data/lib/ticgit-ng.rb
CHANGED
@@ -41,7 +41,11 @@ module TicGitNG
|
|
41
41
|
autoload :Ticket, 'ticgit-ng/ticket'
|
42
42
|
|
43
43
|
# options
|
44
|
-
# :logger
|
44
|
+
# :logger => Logger.new(STDOUT)
|
45
|
+
# :tic_dir => "~/.#{ which_branch?() }"
|
46
|
+
# :working_directory => File.expand_path(File.join(@tic_dir, proj, 'working'))
|
47
|
+
# :index_file => File.expand_path(File.join(@tic_dir, proj, 'index'))
|
48
|
+
# :init => Boolean -- if true, allow initializing ticgit
|
45
49
|
def self.open(git_dir, options = {})
|
46
50
|
Base.new(git_dir, options)
|
47
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: TicGit-ng
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 79
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 2
|
10
|
-
-
|
11
|
-
version: 1.0.2.
|
10
|
+
- 12
|
11
|
+
version: 1.0.2.12
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Scott Chacon
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date:
|
20
|
+
date: 2012-01-04 00:00:00 -05:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/ticgit-ng/command/tag.rb
|
73
73
|
- lib/ticgit-ng/command/recent.rb
|
74
74
|
- lib/ticgit-ng/command/sync.rb
|
75
|
+
- lib/ticgit-ng/command/init.rb
|
75
76
|
- lib/ticgit-ng/command/assign.rb
|
76
77
|
- lib/ticgit-ng/command/list.rb
|
77
78
|
- lib/ticgit-ng/command/milestone.rb
|