jit 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/lib/command/branch.rb +2 -5
- data/lib/command/status.rb +12 -16
- data/lib/config.rb +6 -4
- data/lib/database.rb +5 -4
- data/lib/database/tree.rb +2 -5
- data/lib/database/tree_diff.rb +16 -41
- data/lib/diff.rb +4 -4
- data/lib/diff/hunk.rb +2 -2
- data/lib/diff/myers.rb +1 -1
- data/lib/editor.rb +1 -1
- data/lib/index/entry.rb +1 -1
- data/lib/merge/common_ancestors.rb +1 -0
- data/lib/merge/diff3.rb +1 -1
- data/lib/pack/expander.rb +1 -1
- data/lib/pack/numbers.rb +16 -7
- data/lib/pack/xdelta.rb +1 -1
- data/lib/path_filter.rb +44 -0
- data/lib/refs.rb +13 -1
- data/lib/remotes/protocol.rb +1 -1
- data/lib/remotes/refspec.rb +6 -6
- data/lib/repository/pending_commit.rb +1 -1
- data/lib/rev_list.rb +8 -11
- data/lib/revision.rb +4 -4
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: aa9a39f5359292f9749f7103c29f3a6eadf1dfc1
|
4
|
+
data.tar.gz: 061d790a80ac6f7307a749527c4683f95c28b7d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47ae83e85a0b9f76e57d61dd76acca5402665b98ffd44f085ada67a2c49d9ae69ed81d43059d3d8aca824ccb084714b55f629b1af51992256ddce1eeeac3701e
|
7
|
+
data.tar.gz: 6207ab63be2d26bb76d97451b98212c7f1e37c014cc200698643bb7921139dc80cddc890211d40cd0480399b78db2bc7b5cecb09ccb24a818e99ad90b424923d
|
data/lib/command/branch.rb
CHANGED
@@ -96,10 +96,7 @@ module Command
|
|
96
96
|
|
97
97
|
ahead = divergence.ahead
|
98
98
|
behind = divergence.behind
|
99
|
-
|
100
|
-
return "" if ahead == 0 and behind == 0
|
101
|
-
|
102
|
-
info = []
|
99
|
+
info = []
|
103
100
|
|
104
101
|
if @options[:verbose] > 1
|
105
102
|
info.push(fmt(:blue, repo.refs.short_name(divergence.upstream)))
|
@@ -107,7 +104,7 @@ module Command
|
|
107
104
|
info.push("ahead #{ ahead }") if ahead > 0
|
108
105
|
info.push("behind #{ behind }") if behind > 0
|
109
106
|
|
110
|
-
" [#{ info.join(", ") }]"
|
107
|
+
info.empty? ? "" : " [#{ info.join(", ") }]"
|
111
108
|
end
|
112
109
|
|
113
110
|
def create_branch
|
data/lib/command/status.rb
CHANGED
@@ -68,17 +68,10 @@ module Command
|
|
68
68
|
print_upstream_status
|
69
69
|
print_pending_commit_status
|
70
70
|
|
71
|
-
print_changes("Changes to be committed",
|
72
|
-
|
73
|
-
|
74
|
-
print_changes("
|
75
|
-
@status.conflicts, :red, :conflict)
|
76
|
-
|
77
|
-
print_changes("Changes not staged for commit",
|
78
|
-
@status.workspace_changes, :red)
|
79
|
-
|
80
|
-
print_changes("Untracked files",
|
81
|
-
@status.untracked_files, :red)
|
71
|
+
print_changes("Changes to be committed", @status.index_changes, :green)
|
72
|
+
print_changes("Unmerged paths", @status.conflicts, :red, :conflict)
|
73
|
+
print_changes("Changes not staged for commit", @status.workspace_changes, :red)
|
74
|
+
print_changes("Untracked files", @status.untracked_files, :red)
|
82
75
|
|
83
76
|
print_commit_status
|
84
77
|
end
|
@@ -135,15 +128,18 @@ module Command
|
|
135
128
|
end
|
136
129
|
puts ""
|
137
130
|
when :cherry_pick
|
138
|
-
print_pending_type(
|
131
|
+
print_pending_type(:cherry_pick)
|
139
132
|
when :revert
|
140
|
-
print_pending_type(
|
133
|
+
print_pending_type(:revert)
|
141
134
|
end
|
142
135
|
end
|
143
136
|
|
144
|
-
def print_pending_type(
|
145
|
-
oid
|
146
|
-
|
137
|
+
def print_pending_type(merge_type)
|
138
|
+
oid = repo.pending_commit.merge_oid(merge_type)
|
139
|
+
short = repo.database.short_oid(oid)
|
140
|
+
op = merge_type.to_s.sub("_", "-")
|
141
|
+
|
142
|
+
puts "You are currently #{ op }ing commit #{ short }."
|
147
143
|
|
148
144
|
if @status.conflicts.empty?
|
149
145
|
hint "all conflicts fixed: run 'jit #{ op } --continue'"
|
data/lib/config.rb
CHANGED
@@ -131,11 +131,13 @@ class Config
|
|
131
131
|
|
132
132
|
def subsections(name)
|
133
133
|
name, _ = Section.normalize([name])
|
134
|
-
sections =
|
134
|
+
sections = []
|
135
135
|
|
136
|
-
|
137
|
-
|
138
|
-
|
136
|
+
@lines.each_key do |main, sub|
|
137
|
+
sections.push(sub) if main == name and sub != ""
|
138
|
+
end
|
139
|
+
|
140
|
+
sections
|
139
141
|
end
|
140
142
|
|
141
143
|
def section?(key)
|
data/lib/database.rb
CHANGED
@@ -11,6 +11,7 @@ require_relative "./database/tree"
|
|
11
11
|
require_relative "./database/tree_diff"
|
12
12
|
|
13
13
|
require_relative "./database/backends"
|
14
|
+
require_relative "./path_filter"
|
14
15
|
|
15
16
|
class Database
|
16
17
|
TYPES = {
|
@@ -70,7 +71,7 @@ class Database
|
|
70
71
|
return unless entry
|
71
72
|
return list[prefix.to_s] = entry unless entry.tree?
|
72
73
|
|
73
|
-
load(entry.oid).
|
74
|
+
load(entry.oid).entries.each do |name, item|
|
74
75
|
build_list(list, item, prefix.join(name))
|
75
76
|
end
|
76
77
|
end
|
@@ -83,9 +84,9 @@ class Database
|
|
83
84
|
oid[0..6]
|
84
85
|
end
|
85
86
|
|
86
|
-
def tree_diff(a, b,
|
87
|
-
diff = TreeDiff.new(self
|
88
|
-
diff.compare_oids(a, b)
|
87
|
+
def tree_diff(a, b, filter = PathFilter.new)
|
88
|
+
diff = TreeDiff.new(self)
|
89
|
+
diff.compare_oids(a, b, filter)
|
89
90
|
diff.changes
|
90
91
|
end
|
91
92
|
|
data/lib/database/tree.rb
CHANGED
@@ -4,7 +4,8 @@ class Database
|
|
4
4
|
ENTRY_FORMAT = "Z*H40"
|
5
5
|
TREE_MODE = 040000
|
6
6
|
|
7
|
-
attr_accessor :oid
|
7
|
+
attr_accessor :oid
|
8
|
+
attr_reader :entries
|
8
9
|
|
9
10
|
def self.parse(scanner)
|
10
11
|
entries = {}
|
@@ -36,10 +37,6 @@ class Database
|
|
36
37
|
@entries = entries
|
37
38
|
end
|
38
39
|
|
39
|
-
def each_entry(&block)
|
40
|
-
@entries.each(&block)
|
41
|
-
end
|
42
|
-
|
43
40
|
def add_entry(parents, entry)
|
44
41
|
if parents.empty?
|
45
42
|
@entries[entry.basename] = entry
|
data/lib/database/tree_diff.rb
CHANGED
@@ -1,42 +1,25 @@
|
|
1
|
-
require "pathname"
|
2
|
-
|
3
1
|
class Database
|
4
2
|
class TreeDiff
|
5
3
|
|
6
4
|
attr_reader :changes
|
7
5
|
|
8
|
-
def initialize(database
|
6
|
+
def initialize(database)
|
9
7
|
@database = database
|
10
8
|
@changes = {}
|
11
|
-
|
12
|
-
build_routing_table(prune)
|
13
9
|
end
|
14
10
|
|
15
|
-
def compare_oids(a, b,
|
11
|
+
def compare_oids(a, b, filter)
|
16
12
|
return if a == b
|
17
13
|
|
18
14
|
a_entries = a ? oid_to_tree(a).entries : {}
|
19
15
|
b_entries = b ? oid_to_tree(b).entries : {}
|
20
16
|
|
21
|
-
detect_deletions(a_entries, b_entries,
|
22
|
-
detect_additions(a_entries, b_entries,
|
17
|
+
detect_deletions(a_entries, b_entries, filter)
|
18
|
+
detect_additions(a_entries, b_entries, filter)
|
23
19
|
end
|
24
20
|
|
25
21
|
private
|
26
22
|
|
27
|
-
def build_routing_table(prune)
|
28
|
-
@routes = {}
|
29
|
-
|
30
|
-
prune.each do |path|
|
31
|
-
table = @routes
|
32
|
-
path.each_filename { |name| table = table[name] ||= {} }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def routes_for_prefix(prefix)
|
37
|
-
prefix.each_filename.reduce(@routes) { |table, name| table[name] || {} }
|
38
|
-
end
|
39
|
-
|
40
23
|
def oid_to_tree(oid)
|
41
24
|
object = @database.load(oid)
|
42
25
|
|
@@ -46,40 +29,32 @@ class Database
|
|
46
29
|
end
|
47
30
|
end
|
48
31
|
|
49
|
-
def detect_deletions(a, b,
|
50
|
-
|
51
|
-
|
52
|
-
a.each do |name, entry|
|
53
|
-
next unless routes.empty? or routes.has_key?(name)
|
54
|
-
|
55
|
-
path = prefix.join(name)
|
32
|
+
def detect_deletions(a, b, filter)
|
33
|
+
filter.each_entry(a) do |name, entry|
|
56
34
|
other = b[name]
|
57
|
-
|
58
35
|
next if entry == other
|
59
36
|
|
37
|
+
sub_filter = filter.join(name)
|
38
|
+
|
60
39
|
tree_a, tree_b = [entry, other].map { |e| e&.tree? ? e.oid : nil }
|
61
|
-
compare_oids(tree_a, tree_b,
|
40
|
+
compare_oids(tree_a, tree_b, sub_filter)
|
62
41
|
|
63
42
|
blobs = [entry, other].map { |e| e&.tree? ? nil : e }
|
64
|
-
@changes[path] = blobs if blobs.any?
|
43
|
+
@changes[sub_filter.path] = blobs if blobs.any?
|
65
44
|
end
|
66
45
|
end
|
67
46
|
|
68
|
-
def detect_additions(a, b,
|
69
|
-
|
70
|
-
|
71
|
-
b.each do |name, entry|
|
72
|
-
next unless routes.empty? or routes.has_key?(name)
|
73
|
-
|
74
|
-
path = prefix.join(name)
|
47
|
+
def detect_additions(a, b, filter)
|
48
|
+
filter.each_entry(b) do |name, entry|
|
75
49
|
other = a[name]
|
76
|
-
|
77
50
|
next if other
|
78
51
|
|
52
|
+
sub_filter = filter.join(name)
|
53
|
+
|
79
54
|
if entry.tree?
|
80
|
-
compare_oids(nil, entry.oid,
|
55
|
+
compare_oids(nil, entry.oid, sub_filter)
|
81
56
|
else
|
82
|
-
@changes[path] = [nil, entry]
|
57
|
+
@changes[sub_filter.path] = [nil, entry]
|
83
58
|
end
|
84
59
|
end
|
85
60
|
end
|
data/lib/diff.rb
CHANGED
@@ -28,19 +28,19 @@ module Diff
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.diff(a, b)
|
31
|
-
Myers.diff(lines(a), lines(b))
|
31
|
+
Myers.diff(Diff.lines(a), Diff.lines(b))
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.diff_hunks(a, b)
|
35
|
-
Hunk.filter(diff(a, b))
|
35
|
+
Hunk.filter(Diff.diff(a, b))
|
36
36
|
end
|
37
37
|
|
38
38
|
def self.combined(as, b)
|
39
|
-
diffs = as.map { |a| diff(a, b) }
|
39
|
+
diffs = as.map { |a| Diff.diff(a, b) }
|
40
40
|
Combined.new(diffs).to_a
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.combined_hunks(as, b)
|
44
|
-
Hunk.filter(combined(as, b))
|
44
|
+
Hunk.filter(Diff.combined(as, b))
|
45
45
|
end
|
46
46
|
end
|
data/lib/diff/hunk.rb
CHANGED
@@ -17,11 +17,11 @@ module Diff
|
|
17
17
|
b_start = (offset < 0) ? nil : edits[offset].b_line.number
|
18
18
|
|
19
19
|
hunks.push(Hunk.new(a_starts, b_start, []))
|
20
|
-
offset =
|
20
|
+
offset = Hunk.build(hunks.last, edits, offset)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def self.
|
24
|
+
def self.build(hunk, edits, offset)
|
25
25
|
counter = -1
|
26
26
|
|
27
27
|
until counter == 0
|
data/lib/diff/myers.rb
CHANGED
data/lib/editor.rb
CHANGED
data/lib/index/entry.rb
CHANGED
data/lib/merge/diff3.rb
CHANGED
data/lib/pack/expander.rb
CHANGED
data/lib/pack/numbers.rb
CHANGED
@@ -59,19 +59,28 @@ module Pack
|
|
59
59
|
|
60
60
|
module PackedInt56LE
|
61
61
|
def self.write(value)
|
62
|
-
bytes =
|
62
|
+
bytes = [0]
|
63
63
|
|
64
|
-
|
65
|
-
|
64
|
+
(0...7).each do |i|
|
65
|
+
byte = (value >> (8 * i)) & 0xff
|
66
|
+
next if byte == 0
|
66
67
|
|
67
|
-
|
68
|
+
bytes[0] |= 1 << i
|
69
|
+
bytes.push(byte)
|
70
|
+
end
|
71
|
+
|
72
|
+
bytes
|
68
73
|
end
|
69
74
|
|
70
75
|
def self.read(input, header)
|
71
|
-
|
72
|
-
bytes = flags.map { |i| input.readbyte << (8 * i) }
|
76
|
+
value = 0
|
73
77
|
|
74
|
-
|
78
|
+
(0...7).each do |i|
|
79
|
+
next if header & (1 << i) == 0
|
80
|
+
value |= input.readbyte << (8 * i)
|
81
|
+
end
|
82
|
+
|
83
|
+
value
|
75
84
|
end
|
76
85
|
end
|
77
86
|
|
data/lib/pack/xdelta.rb
CHANGED
data/lib/path_filter.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "pathname"
|
2
|
+
|
3
|
+
class PathFilter
|
4
|
+
Trie = Struct.new(:matched, :children) do
|
5
|
+
def self.from_paths(paths)
|
6
|
+
root = Trie.node
|
7
|
+
root.matched = true if paths.empty?
|
8
|
+
|
9
|
+
paths.each do |path|
|
10
|
+
trie = root
|
11
|
+
path.each_filename { |name| trie = trie.children[name] }
|
12
|
+
trie.matched = true
|
13
|
+
end
|
14
|
+
|
15
|
+
root
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.node
|
19
|
+
Trie.new(false, Hash.new { |hash, key| hash[key] = Trie.node })
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
attr_reader :path
|
24
|
+
|
25
|
+
def self.build(paths)
|
26
|
+
PathFilter.new(Trie.from_paths(paths))
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(routes = Trie.new(true), path = Pathname.new(""))
|
30
|
+
@routes = routes
|
31
|
+
@path = path
|
32
|
+
end
|
33
|
+
|
34
|
+
def each_entry(entries)
|
35
|
+
entries.each do |name, entry|
|
36
|
+
yield name, entry if @routes.matched or @routes.children.has_key?(name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def join(name)
|
41
|
+
next_routes = @routes.matched ? @routes : @routes.children[name]
|
42
|
+
PathFilter.new(next_routes, @path.join(name))
|
43
|
+
end
|
44
|
+
end
|
data/lib/refs.rb
CHANGED
@@ -101,7 +101,6 @@ class Refs
|
|
101
101
|
raise InvalidBranch, "A branch named '#{ branch_name }' already exists."
|
102
102
|
end
|
103
103
|
|
104
|
-
FileUtils.mkdir_p(path.dirname)
|
105
104
|
update_ref_file(path, start_oid)
|
106
105
|
end
|
107
106
|
|
@@ -115,6 +114,8 @@ class Refs
|
|
115
114
|
raise InvalidBranch, "branch '#{ branch_name }' not found." unless oid
|
116
115
|
|
117
116
|
File.unlink(path)
|
117
|
+
delete_parent_directories(path)
|
118
|
+
|
118
119
|
oid
|
119
120
|
ensure
|
120
121
|
lockfile.rollback
|
@@ -195,6 +196,17 @@ class Refs
|
|
195
196
|
prefix ? prefix.join(name) : nil
|
196
197
|
end
|
197
198
|
|
199
|
+
def delete_parent_directories(path)
|
200
|
+
path.dirname.ascend do |dir|
|
201
|
+
break if dir == @heads_path
|
202
|
+
begin
|
203
|
+
Dir.rmdir(dir)
|
204
|
+
rescue Errno::ENOTEMPTY
|
205
|
+
break
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
198
210
|
def read_oid_or_symref(path)
|
199
211
|
data = File.read(path).strip
|
200
212
|
match = SYMREF.match(data)
|
data/lib/remotes/protocol.rb
CHANGED
data/lib/remotes/refspec.rb
CHANGED
@@ -10,8 +10,8 @@ class Remotes
|
|
10
10
|
Refspec = Struct.new(:source, :target, :forced) do
|
11
11
|
def self.parse(spec)
|
12
12
|
match = REFSPEC_FORMAT.match(spec)
|
13
|
-
source = canonical(match[2])
|
14
|
-
target = canonical(match[4]) || source
|
13
|
+
source = Refspec.canonical(match[2])
|
14
|
+
target = Refspec.canonical(match[4]) || source
|
15
15
|
|
16
16
|
Refspec.new(source, target, match[1] == "+")
|
17
17
|
end
|
@@ -20,15 +20,15 @@ class Remotes
|
|
20
20
|
return nil if name.to_s == ""
|
21
21
|
return name unless Revision.valid_ref?(name)
|
22
22
|
|
23
|
-
first = Pathname.new(name).
|
23
|
+
first = Pathname.new(name).descend.first
|
24
24
|
dirs = [Refs::REFS_DIR, Refs::HEADS_DIR, Refs::REMOTES_DIR]
|
25
|
-
prefix = dirs.find { |dir|
|
25
|
+
prefix = dirs.find { |dir| dir.basename == first }
|
26
26
|
|
27
27
|
(prefix&.dirname || Refs::HEADS_DIR).join(name).to_s
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.expand(specs, refs)
|
31
|
-
specs = specs.map { |spec| parse(spec) }
|
31
|
+
specs = specs.map { |spec| Refspec.parse(spec) }
|
32
32
|
|
33
33
|
specs.reduce({}) do |mappings, spec|
|
34
34
|
mappings.merge(spec.match_refs(refs))
|
@@ -36,7 +36,7 @@ class Remotes
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def self.invert(specs, ref)
|
39
|
-
specs = specs.map { |spec| parse(spec) }
|
39
|
+
specs = specs.map { |spec| Refspec.parse(spec) }
|
40
40
|
|
41
41
|
map = specs.reduce({}) do |mappings, spec|
|
42
42
|
spec.source, spec.target = spec.target, spec.source
|
data/lib/rev_list.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "pathname"
|
2
2
|
require "set"
|
3
3
|
|
4
|
+
require_relative "./path_filter"
|
4
5
|
require_relative "./revision"
|
5
6
|
|
6
7
|
class RevList
|
@@ -31,6 +32,8 @@ class RevList
|
|
31
32
|
|
32
33
|
revs.each { |rev| handle_revision(rev) }
|
33
34
|
handle_revision(Revision::HEAD) if @queue.empty?
|
35
|
+
|
36
|
+
@filter = PathFilter.build(@prune)
|
34
37
|
end
|
35
38
|
|
36
39
|
def each
|
@@ -42,7 +45,7 @@ class RevList
|
|
42
45
|
|
43
46
|
def tree_diff(old_oid, new_oid)
|
44
47
|
key = [old_oid, new_oid]
|
45
|
-
@diffs[key] ||= @repo.database.tree_diff(old_oid, new_oid, @
|
48
|
+
@diffs[key] ||= @repo.database.tree_diff(old_oid, new_oid, @filter)
|
46
49
|
end
|
47
50
|
|
48
51
|
private
|
@@ -141,16 +144,10 @@ class RevList
|
|
141
144
|
|
142
145
|
until queue.empty?
|
143
146
|
oid = queue.shift
|
147
|
+
next unless mark(oid, :uninteresting)
|
144
148
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
parent = @commits[oid]
|
149
|
-
break unless parent
|
150
|
-
|
151
|
-
oid = parent.parents.first
|
152
|
-
queue.concat(parent.parents.drop(1))
|
153
|
-
end
|
149
|
+
commit = @commits[oid]
|
150
|
+
queue.concat(commit.parents) if commit
|
154
151
|
end
|
155
152
|
end
|
156
153
|
|
@@ -224,7 +221,7 @@ class RevList
|
|
224
221
|
|
225
222
|
tree = @repo.database.load(entry.oid)
|
226
223
|
|
227
|
-
tree.
|
224
|
+
tree.entries.each do |name, item|
|
228
225
|
traverse_tree(item, path.join(name)) { |object| yield object }
|
229
226
|
end
|
230
227
|
end
|
data/lib/revision.rb
CHANGED
@@ -54,16 +54,16 @@ class Revision
|
|
54
54
|
|
55
55
|
def self.parse(revision)
|
56
56
|
if match = PARENT.match(revision)
|
57
|
-
rev = parse(match[1])
|
57
|
+
rev = Revision.parse(match[1])
|
58
58
|
n = (match[2] == "") ? 1 : match[2].to_i
|
59
59
|
rev ? Parent.new(rev, n) : nil
|
60
60
|
elsif match = ANCESTOR.match(revision)
|
61
|
-
rev = parse(match[1])
|
61
|
+
rev = Revision.parse(match[1])
|
62
62
|
rev ? Ancestor.new(rev, match[2].to_i) : nil
|
63
63
|
elsif match = UPSTREAM.match(revision)
|
64
|
-
rev = parse(match[1])
|
64
|
+
rev = Revision.parse(match[1])
|
65
65
|
rev ? Upstream.new(rev) : nil
|
66
|
-
elsif valid_ref?(revision)
|
66
|
+
elsif Revision.valid_ref?(revision)
|
67
67
|
name = REF_ALIASES[revision] || revision
|
68
68
|
Ref.new(name)
|
69
69
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Coglan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: jcoglan@gmail.com
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- lib/pack/writer.rb
|
92
92
|
- lib/pack/xdelta.rb
|
93
93
|
- lib/pager.rb
|
94
|
+
- lib/path_filter.rb
|
94
95
|
- lib/progress.rb
|
95
96
|
- lib/refs.rb
|
96
97
|
- lib/remotes.rb
|
@@ -129,7 +130,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
130
|
- !ruby/object:Gem::Version
|
130
131
|
version: '0'
|
131
132
|
requirements: []
|
132
|
-
|
133
|
+
rubyforge_project:
|
134
|
+
rubygems_version: 2.5.2.3
|
133
135
|
signing_key:
|
134
136
|
specification_version: 4
|
135
137
|
summary: The information manager from London
|