svnx 2.4.1 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/svnx/base/cmdline.rb +2 -2
- data/lib/svnx/base/command.rb +10 -17
- data/lib/svnx/base/command_factory.rb +14 -4
- data/lib/svnx/base/entries.rb +13 -7
- data/lib/svnx/base/entry.rb +2 -2
- data/lib/svnx/blame/entries.rb +1 -1
- data/lib/svnx/blame/entry.rb +1 -1
- data/lib/svnx/diff/command.rb +2 -2
- data/lib/svnx/info/entries.rb +1 -1
- data/lib/svnx/info/entry.rb +4 -4
- data/lib/svnx/log/entries.rb +1 -1
- data/lib/svnx/log/entry.rb +2 -2
- data/lib/svnx/project.rb +4 -4
- data/lib/svnx/propget/entries.rb +1 -1
- data/lib/svnx/propget/entry.rb +1 -1
- data/lib/svnx/status/entries.rb +6 -2
- data/lib/svnx/status/entry.rb +3 -3
- data/lib/svnx/util/dateutil.rb +6 -20
- data/lib/svnx/util/englishtime.rb +31 -0
- data/lib/svnx/util/timeutil.rb +40 -0
- data/lib/svnx/version.rb +1 -1
- data/svnx.gemspec +2 -1
- metadata +15 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c874ec9268528dbc63a6357a0183e9fae50adf52
|
4
|
+
data.tar.gz: c58d74793a24e79f12a70e57c3ddd2408e86a8db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f55486032214b0bd5dacc429bc7596d37599bd1c0dbd02ee039ac21eab702546663363e0f894c2e75ff8c1dc0239536b75a79516c6c3831008b8edb7ecd8cb7
|
7
|
+
data.tar.gz: c6925299e2740810633112b502b6e5bbd6e95048ffe090e14001c58f83051814522eea553d1078d8901c48431cde2f341cb8fdf1d3c5c8358e807caf266fdb05
|
data/lib/svnx/base/cmdline.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'logue/loggable'
|
5
|
-
require 'command/cacheable'
|
5
|
+
require 'command/cacheable/command'
|
6
6
|
require 'svnx/base/env'
|
7
7
|
|
8
8
|
module Svnx
|
@@ -46,7 +46,7 @@ module Svnx::Base
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def command_line cmdargs
|
49
|
-
Command::Cacheable::Command.new cmdargs, caching: @caching,
|
49
|
+
::Command::Cacheable::Command.new cmdargs, caching: @caching, cachedir: Svnx::Env.instance.cache_dir
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
data/lib/svnx/base/command.rb
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'logue/loggable'
|
5
|
-
require 'command/cacheable/command'
|
6
|
-
# require 'svnx/base/cmdline'
|
7
5
|
require 'svnx/util/classutil'
|
8
6
|
require 'svnx/base/command_factory'
|
9
7
|
|
@@ -28,40 +26,35 @@ module Svnx::Base
|
|
28
26
|
attr_reader :output
|
29
27
|
attr_reader :error
|
30
28
|
attr_reader :status
|
31
|
-
|
32
29
|
attr_reader :options
|
33
30
|
|
34
|
-
def initialize options,
|
31
|
+
def initialize options, cmdlinecls: nil, optcls: nil, xml: false, caching: caching?
|
35
32
|
factory = CommandFactory.new
|
36
|
-
params = factory.create self.class, cmdlinecls: cls, optcls: optcls
|
37
33
|
|
38
|
-
|
34
|
+
params = factory.create self.class, cmdlinecls: cmdlinecls, optcls: optcls
|
35
|
+
|
36
|
+
optcls ||= params.options
|
39
37
|
|
40
38
|
@options = optcls.new options
|
41
39
|
cmdargs = @options.to_args
|
42
|
-
subcommand = params[:subcommand]
|
43
40
|
|
44
|
-
|
41
|
+
subcommand = params.subcommand
|
45
42
|
|
46
|
-
|
47
|
-
debug "@cmdline: #{@cmdline}"
|
43
|
+
cmdlinecls ||= params.cmdline
|
48
44
|
|
49
|
-
@
|
50
|
-
debug "@output: #{@output && @output[0 .. 100]}"
|
45
|
+
@cmdline = cmdlinecls.new(subcommand: subcommand, xml: xml, caching: caching, args: cmdargs)
|
51
46
|
|
47
|
+
@output = @cmdline.execute
|
52
48
|
@error = @cmdline.error
|
53
|
-
debug "@error: #{@error}"
|
54
|
-
|
55
49
|
@status = @cmdline.status
|
56
|
-
debug "@status: #{@status}"
|
57
50
|
end
|
58
51
|
end
|
59
52
|
|
60
53
|
class EntriesCommand < Command
|
61
54
|
attr_reader :entries
|
62
55
|
|
63
|
-
def initialize options,
|
64
|
-
super options,
|
56
|
+
def initialize options, cmdlinecls: CommandLine, caching: caching?, xml: true, entries_class: nil
|
57
|
+
super options, cmdlinecls: cmdlinecls, xml: xml, caching: caching
|
65
58
|
|
66
59
|
if not @output.empty?
|
67
60
|
entries_class ||= begin
|
@@ -5,10 +5,22 @@ require 'svnx/base/cmdline'
|
|
5
5
|
require 'svnx/util/classutil'
|
6
6
|
|
7
7
|
module Svnx::Base
|
8
|
+
class CommandParams
|
9
|
+
attr_reader :options
|
10
|
+
attr_reader :subcommand
|
11
|
+
attr_reader :cmdline
|
12
|
+
|
13
|
+
def initialize options: nil, subcommand: nil, cmdline: nil
|
14
|
+
@options = options
|
15
|
+
@subcommand = subcommand
|
16
|
+
@cmdline = cmdline
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
class CommandFactory
|
9
21
|
include Logue::Loggable
|
10
22
|
|
11
|
-
def create cmdcls, cmdlinecls:
|
23
|
+
def create cmdcls, cmdlinecls: CommandLine, optcls: nil
|
12
24
|
melements = ClassUtil.module_elements cmdcls
|
13
25
|
|
14
26
|
optcls ||= begin
|
@@ -16,9 +28,7 @@ module Svnx::Base
|
|
16
28
|
modl::Options
|
17
29
|
end
|
18
30
|
|
19
|
-
cmdlinecls
|
20
|
-
|
21
|
-
{ options_class: optcls, subcommand: melements[-1].downcase, command_line_class: cmdlinecls }
|
31
|
+
CommandParams.new options: optcls, subcommand: melements[-1].downcase, cmdline: cmdlinecls
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
data/lib/svnx/base/entries.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'rexml/document'
|
5
|
+
require 'nokogiri'
|
5
6
|
require 'logue/loggable'
|
6
7
|
|
7
8
|
module Svnx
|
@@ -12,6 +13,8 @@ end
|
|
12
13
|
# this is a parse/process on-demand list of entries, acting like an
|
13
14
|
# Enumerable.
|
14
15
|
|
16
|
+
$use_nokogiri = true
|
17
|
+
|
15
18
|
module Svnx::Base
|
16
19
|
class Entries
|
17
20
|
include Logue::Loggable, Enumerable
|
@@ -21,7 +24,11 @@ module Svnx::Base
|
|
21
24
|
def initialize lines
|
22
25
|
# it's a hash, but indexed with integers, for non-sequential access:
|
23
26
|
@entries = Hash.new
|
24
|
-
doc =
|
27
|
+
doc = if $use_nokogiri
|
28
|
+
Nokogiri::XML Array(lines).join
|
29
|
+
else
|
30
|
+
REXML::Document.new Array(lines).join
|
31
|
+
end
|
25
32
|
@elements = get_elements doc
|
26
33
|
@size = @elements.size
|
27
34
|
end
|
@@ -34,24 +41,23 @@ module Svnx::Base
|
|
34
41
|
raise "create_entry must be implemented for: #{self.class}"
|
35
42
|
end
|
36
43
|
|
37
|
-
# this doesn't handle negative indices
|
38
44
|
def [] idx
|
39
45
|
if entry = @entries[idx]
|
40
46
|
return entry
|
41
47
|
end
|
42
|
-
if idx
|
48
|
+
if idx >= size
|
43
49
|
raise "error: index #{idx} is not in range(0 .. #{size})"
|
50
|
+
elsif idx < 0
|
51
|
+
idx = size + idx
|
44
52
|
end
|
45
|
-
@entries[idx] = create_entry @elements[idx
|
53
|
+
@entries[idx] = create_entry @elements[idx]
|
46
54
|
end
|
47
55
|
|
48
56
|
def each(&blk)
|
49
57
|
# all elements must be processed before each can run:
|
50
58
|
if @elements
|
51
|
-
# a little confusing here: REXML does each_with_index with idx
|
52
|
-
# zero-based, but elements[0] is invalid.
|
53
59
|
@elements.each_with_index do |element, idx|
|
54
|
-
@entries[idx] ||= create_entry
|
60
|
+
@entries[idx] ||= create_entry element
|
55
61
|
end
|
56
62
|
|
57
63
|
@elements = nil
|
data/lib/svnx/base/entry.rb
CHANGED
@@ -46,11 +46,11 @@ module Svnx::Base
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def attribute_value xmlelement, attrname
|
49
|
-
xmlelement
|
49
|
+
xmlelement[attrname.to_s]
|
50
50
|
end
|
51
51
|
|
52
52
|
def element_text xmlelement, elmtname
|
53
|
-
elmt = xmlelement.
|
53
|
+
elmt = xmlelement.at_xpath elmtname.to_s
|
54
54
|
elmt && elmt.text || ""
|
55
55
|
end
|
56
56
|
end
|
data/lib/svnx/blame/entries.rb
CHANGED
data/lib/svnx/blame/entry.rb
CHANGED
data/lib/svnx/diff/command.rb
CHANGED
@@ -9,8 +9,8 @@ module Svnx::Diff
|
|
9
9
|
class Command < Svnx::Base::Command
|
10
10
|
attr_reader :entries
|
11
11
|
|
12
|
-
def initialize cmdopts,
|
13
|
-
super cmdopts,
|
12
|
+
def initialize cmdopts, cmdlinecls: Svnx::Base::CommandLine
|
13
|
+
super cmdopts, cmdlinecls: cmdlinecls, xml: false, caching: true
|
14
14
|
if @output
|
15
15
|
@entries = Svnx::Diff::Parser.new.parse_all_output @output.dup
|
16
16
|
end
|
data/lib/svnx/info/entries.rb
CHANGED
data/lib/svnx/info/entry.rb
CHANGED
@@ -21,16 +21,16 @@ module Svnx::Info
|
|
21
21
|
def set_from_element elmt
|
22
22
|
set_attr_vars elmt, 'kind', 'path', 'revision'
|
23
23
|
set_elmt_var elmt, 'url'
|
24
|
-
if relurl = elmt.
|
24
|
+
if relurl = elmt.at_xpath('relative-url')
|
25
25
|
@relative_url = relurl.text
|
26
26
|
end
|
27
27
|
|
28
|
-
repo = elmt.
|
28
|
+
repo = elmt.at_xpath 'repository'
|
29
29
|
set_elmt_var repo, 'root'
|
30
30
|
|
31
31
|
@wc_root = nil
|
32
|
-
if wcinfo = elmt.
|
33
|
-
if wcroot = wcinfo.
|
32
|
+
if wcinfo = elmt.at_xpath('wc-info')
|
33
|
+
if wcroot = wcinfo.at_xpath('wcroot-abspath')
|
34
34
|
@wc_root = wcroot.text
|
35
35
|
end
|
36
36
|
end
|
data/lib/svnx/log/entries.rb
CHANGED
data/lib/svnx/log/entry.rb
CHANGED
@@ -16,7 +16,7 @@ module Svnx::Log
|
|
16
16
|
|
17
17
|
set_elmt_vars elmt, 'author', 'date', 'msg'
|
18
18
|
|
19
|
-
@paths = elmt.
|
19
|
+
@paths = elmt.xpath('paths/path').collect do |pe|
|
20
20
|
kind = attribute_value pe, 'kind'
|
21
21
|
action = attribute_value pe, 'action'
|
22
22
|
name = pe.text
|
@@ -24,7 +24,7 @@ module Svnx::Log
|
|
24
24
|
EntryPath.new(kind: kind, action: Svnx::Action.new(action), name: name)
|
25
25
|
end.sort # sorted, because svn is not consistent with order
|
26
26
|
|
27
|
-
@entries = elmt.
|
27
|
+
@entries = elmt.xpath('logentry').collect do |le|
|
28
28
|
Entry.new le
|
29
29
|
end
|
30
30
|
end
|
data/lib/svnx/project.rb
CHANGED
@@ -10,10 +10,10 @@ end
|
|
10
10
|
class Svnx::Project
|
11
11
|
attr_reader :dir
|
12
12
|
|
13
|
-
def initialize dir: nil, url: nil,
|
13
|
+
def initialize dir: nil, url: nil, cmdlinecls: nil
|
14
14
|
@dir = dir
|
15
15
|
@url = url
|
16
|
-
@
|
16
|
+
@cmdlinecls = cmdlinecls
|
17
17
|
end
|
18
18
|
|
19
19
|
def where
|
@@ -43,8 +43,8 @@ class Svnx::Project
|
|
43
43
|
cmdargs = fields.collect { |key| key.to_s + ": " + key.to_s }.join ", "
|
44
44
|
|
45
45
|
src = Array.new.tap do |a|
|
46
|
-
a << "def #{cmd} #{params},
|
47
|
-
a << " cmd = Svnx::#{cmd.to_s.capitalize}::Command.new({ #{cmdargs} },
|
46
|
+
a << "def #{cmd} #{params}, cmdlinecls: @cmdlinecls"
|
47
|
+
a << " cmd = Svnx::#{cmd.to_s.capitalize}::Command.new({ #{cmdargs} }, cmdlinecls: cmdlinecls)"
|
48
48
|
a << " cmd.respond_to?(:entries) ? cmd.entries : cmd.output"
|
49
49
|
a << "end"
|
50
50
|
end.join "\n"
|
data/lib/svnx/propget/entries.rb
CHANGED
data/lib/svnx/propget/entry.rb
CHANGED
data/lib/svnx/status/entries.rb
CHANGED
@@ -12,8 +12,12 @@ module Svnx::Status
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def get_elements doc
|
15
|
-
|
16
|
-
|
15
|
+
if $use_nokogiri
|
16
|
+
doc.xpath '//status/target/entry'
|
17
|
+
else
|
18
|
+
# status/target
|
19
|
+
doc.elements['status'].elements['target'].elements
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
def create_entry xmlelement
|
data/lib/svnx/status/entry.rb
CHANGED
@@ -30,11 +30,11 @@ module Svnx::Status
|
|
30
30
|
def set_from_element elmt
|
31
31
|
set_attr_var elmt, 'path'
|
32
32
|
|
33
|
-
wcstatus = elmt.
|
34
|
-
@status = Svnx::Action.new(wcstatus
|
33
|
+
wcstatus = elmt.at_xpath 'wc-status'
|
34
|
+
@status = Svnx::Action.new(wcstatus['item'])
|
35
35
|
set_attr_var wcstatus, 'status_revision', 'revision'
|
36
36
|
|
37
|
-
commit = wcstatus.
|
37
|
+
commit = wcstatus.at_xpath 'commit'
|
38
38
|
set_attr_var commit, 'commit_revision', 'revision'
|
39
39
|
@name = @path.dup
|
40
40
|
|
data/lib/svnx/util/dateutil.rb
CHANGED
@@ -2,30 +2,16 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'time'
|
5
|
+
require 'svnx/util/englishtime'
|
5
6
|
|
6
7
|
class DateUtil
|
7
8
|
class << self
|
8
|
-
def relative_full datetime, reltime =
|
9
|
-
|
10
|
-
if
|
11
|
-
|
9
|
+
def relative_full datetime, reltime = nil
|
10
|
+
et = EnglishTime.new datetime
|
11
|
+
if reltime
|
12
|
+
et.since reltime, "earlier"
|
12
13
|
else
|
13
|
-
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# returns the value in seconds, minutes, hours, or days, if within a week
|
18
|
-
def to_time_units seconds
|
19
|
-
secs = seconds.to_i
|
20
|
-
|
21
|
-
if secs < 120
|
22
|
-
"#{secs} seconds"
|
23
|
-
elsif (min = secs / 60) < 120
|
24
|
-
"#{min} minutes"
|
25
|
-
elsif (hour = min / 60) < 72
|
26
|
-
"#{hour} hours"
|
27
|
-
elsif (day = hour / 24) < 7
|
28
|
-
"#{day} days"
|
14
|
+
et.ago
|
29
15
|
end
|
30
16
|
end
|
31
17
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'time'
|
5
|
+
require 'svnx/util/timeutil'
|
6
|
+
|
7
|
+
class EnglishTime
|
8
|
+
attr_reader :time
|
9
|
+
|
10
|
+
def initialize time
|
11
|
+
@time = time
|
12
|
+
end
|
13
|
+
|
14
|
+
def ago
|
15
|
+
since Time.new, "ago"
|
16
|
+
end
|
17
|
+
|
18
|
+
def earlier totime
|
19
|
+
since totime, "earlier"
|
20
|
+
end
|
21
|
+
|
22
|
+
def since totime, name
|
23
|
+
diff = totime - @time
|
24
|
+
seconds = diff.to_i
|
25
|
+
if units = TimeUtil.new.to_units(seconds)
|
26
|
+
sprintf "%s %s %s (%s)", units.first, units.last, name, @time.strftime("%m/%d %H:%M")
|
27
|
+
else
|
28
|
+
@time.strftime "%Y/%m/%d %H:%M"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
class TimeUtil
|
7
|
+
attr_reader :intervals
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@intervals = Hash.new.tap do |h|
|
11
|
+
h[:seconds] = 60
|
12
|
+
h[:minutes] = 60
|
13
|
+
h[:hours] = 24
|
14
|
+
h[:days] = 7
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# returns the value in seconds, minutes, hours, days, etc.
|
19
|
+
def to_units seconds
|
20
|
+
secs = seconds.to_i
|
21
|
+
|
22
|
+
max = Hash.new.tap do |h|
|
23
|
+
h[:seconds] = 120
|
24
|
+
h[:minutes] = 120
|
25
|
+
h[:hours] = 72
|
26
|
+
h[:days] = 18
|
27
|
+
h[:weeks] = 4
|
28
|
+
end
|
29
|
+
|
30
|
+
num = secs
|
31
|
+
max.each do |field, value|
|
32
|
+
if num < value
|
33
|
+
return [ num, field ]
|
34
|
+
elsif ival = @intervals[field]
|
35
|
+
num /= ival
|
36
|
+
end
|
37
|
+
end
|
38
|
+
nil
|
39
|
+
end
|
40
|
+
end
|
data/lib/svnx/version.rb
CHANGED
data/svnx.gemspec
CHANGED
@@ -28,9 +28,10 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
30
|
spec.add_runtime_dependency "command-cacheable", "~> 0.2"
|
31
|
+
spec.add_runtime_dependency "logue", "~> 1.0.16"
|
32
|
+
|
31
33
|
spec.add_development_dependency "bundler", "~> 1.12"
|
32
34
|
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
-
spec.add_development_dependency "logue", "~> 1.0.16"
|
34
35
|
spec.add_development_dependency "test-unit", "~> 3.1.5"
|
35
36
|
spec.add_development_dependency "paramesan", "~> 0.1.1"
|
36
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svnx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Pace
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: command-cacheable
|
@@ -25,47 +25,47 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: logue
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 1.0.16
|
34
|
+
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.0.16
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.12'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.12'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '10.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: test-unit
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +164,9 @@ files:
|
|
164
164
|
- lib/svnx/update/options.rb
|
165
165
|
- lib/svnx/util/classutil.rb
|
166
166
|
- lib/svnx/util/dateutil.rb
|
167
|
+
- lib/svnx/util/englishtime.rb
|
167
168
|
- lib/svnx/util/objutil.rb
|
169
|
+
- lib/svnx/util/timeutil.rb
|
168
170
|
- lib/svnx/version.rb
|
169
171
|
- repackage
|
170
172
|
- svnx.gemspec
|
@@ -189,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
191
|
version: '0'
|
190
192
|
requirements: []
|
191
193
|
rubyforge_project:
|
192
|
-
rubygems_version: 2.
|
194
|
+
rubygems_version: 2.5.2.1
|
193
195
|
signing_key:
|
194
196
|
specification_version: 4
|
195
197
|
summary: Ruby objects from the Subversion command line
|