dolt 0.4.2 → 0.4.3

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dolt (0.4.1)
4
+ dolt (0.4.3)
5
5
  async_sinatra (~> 1.0)
6
6
  builder (~> 3.1)
7
7
  em_pessimistic (~> 0.1)
@@ -20,11 +20,36 @@ require "em_pessimistic/deferrable_child_process"
20
20
  require "em/deferrable"
21
21
  require "dolt/git/blame"
22
22
  require "dolt/git/commit"
23
+ require "dolt/git/submodule"
24
+ require "dolt/git/tree"
23
25
  require "dolt/async/when"
24
26
 
25
27
  module Dolt
26
28
  module Git
27
29
  class Repository < EMRugged::Repository
30
+ def submodules(ref)
31
+ d = EventMachine::DefaultDeferrable.new
32
+ gm = rev_parse("#{ref}:.gitmodules")
33
+ gm.callback do |config|
34
+ d.succeed(Dolt::Git::Submodule.parse_config(config.content))
35
+ end
36
+ # Fails if .gitmodules cannot be found, which means no submodules
37
+ gm.errback { |err| d.succeed([]) }
38
+ d
39
+ end
40
+
41
+ def tree(ref, path)
42
+ d = EventMachine::DefaultDeferrable.new
43
+ rp = rev_parse("#{ref}:#{path}")
44
+ rp.callback do |tree|
45
+ break d.fail(StandardError.new("Not a tree")) unless tree.is_a?(Rugged::Tree)
46
+ break d.succeed(tree) if !tree.find { |e| e[:type].nil? }
47
+ annotate_submodules(ref, path, d, tree)
48
+ end
49
+ rp.errback { |err| d.fail(err) }
50
+ d
51
+ end
52
+
28
53
  def blame(ref, path)
29
54
  deferred_method("blame -l -t -p #{ref} #{path}") do |output, s|
30
55
  Dolt::Git::Blame.parse_porcelain(output)
@@ -72,6 +97,24 @@ module Dolt
72
97
  d
73
98
  end
74
99
 
100
+ def annotate_submodules(ref, path, deferrable, tree)
101
+ submodules(ref).callback do |submodules|
102
+ entries = tree.entries.map do |entry|
103
+ if entry[:type].nil?
104
+ mod = path == "" ? entry[:name] : File.join(path, entry[:name])
105
+ meta = submodules.find { |s| s[:path] == mod }
106
+ if meta
107
+ entry[:type] = :submodule
108
+ entry[:url] = meta[:url]
109
+ end
110
+ end
111
+ entry
112
+ end
113
+
114
+ deferrable.succeed(Dolt::Git::Tree.new(tree.oid, entries))
115
+ end
116
+ end
117
+
75
118
  def deferred_method(cmd, &block)
76
119
  d = EventMachine::DefaultDeferrable.new
77
120
  cmd = git(cmd)
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ #--
3
+ # Copyright (C) 2012 Gitorious AS
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Affero General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Affero General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ #++
18
+
19
+ module Dolt
20
+ module Git
21
+ class Submodule
22
+ def self.parse_config(config)
23
+ config.split("\n").inject([]) do |modules, line|
24
+ if line =~ /\[submodule ".*"\]/
25
+ modules << {}
26
+ else
27
+ _, key, val = *line.match(/\s([^\s]+) = ([^\s]+)/)
28
+ modules.last[key.to_sym] = val
29
+ end
30
+ modules
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+ #--
3
+ # Copyright (C) 2012 Gitorious AS
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Affero General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Affero General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ #++
18
+
19
+ module Dolt
20
+ module Git
21
+ class Tree
22
+ attr_reader :oid, :entries
23
+ include Enumerable
24
+
25
+ def initialize(oid, entries)
26
+ @oid = oid
27
+ @entries = entries
28
+ end
29
+
30
+ def each(&block)
31
+ entries.each(&block)
32
+ end
33
+
34
+ # From Rugged::Tree
35
+ def inspect
36
+ data = "#<Dolt::Git::Tree:#{object_id} {oid: #{oid}}>\n"
37
+ self.each { |e| data << " <\"#{e[:name]}\" #{e[:oid]}>\n" }
38
+ data
39
+ end
40
+ end
41
+ end
42
+ end
@@ -29,7 +29,7 @@ module Dolt
29
29
  end
30
30
 
31
31
  def tree(repo, ref, path, &block)
32
- repo_action(repo, ref, path, :tree, :rev_parse, "#{ref}:#{path}", &block)
32
+ repo_action(repo, ref, path, :tree, :tree, ref, path, &block)
33
33
  end
34
34
 
35
35
  def blame(repo, ref, path, &block)
@@ -60,7 +60,7 @@ module Dolt
60
60
  actions.tree(repo, ref, path) do |err, data|
61
61
  return error(err, repo, ref) if !err.nil?
62
62
  tree = data[:tree]
63
- return redirect(blob_url(repo, ref, path)) if !tree.is_a?(Rugged::Tree)
63
+ return redirect(blob_url(repo, ref, path)) if tree.class.to_s !~ /\bTree/
64
64
  response["Content-Type"] = "text/html"
65
65
  body(renderer.render(:tree, data))
66
66
  end
data/lib/dolt/version.rb CHANGED
@@ -17,5 +17,5 @@
17
17
  #++
18
18
 
19
19
  module Dolt
20
- VERSION = "0.4.2"
20
+ VERSION = "0.4.3"
21
21
  end
@@ -20,6 +20,7 @@ module Dolt
20
20
  module View
21
21
  module Object
22
22
  def object_url(repository, ref, path, object)
23
+ return object[:url] if object[:type] == :submodule
23
24
  url = "/#{object[:type]}/#{ref}:#{object_path(path, object)}"
24
25
  repo_url(repository, url)
25
26
  end
@@ -29,7 +30,14 @@ module Dolt
29
30
  end
30
31
 
31
32
  def object_icon_class(entry)
32
- entry[:type] == :blob ? "icon-file" : "icon-folder-close"
33
+ case entry[:type]
34
+ when :blob
35
+ "icon-file"
36
+ when :tree
37
+ "icon-folder-close"
38
+ when :submodule
39
+ "icon-hdd"
40
+ end
33
41
  end
34
42
  end
35
43
  end
@@ -24,7 +24,7 @@ module Dolt
24
24
  end
25
25
 
26
26
  def tree_entries(tree)
27
- sort(tree.entries.select { |e| e[:type] == :tree }) +
27
+ sort(tree.entries.select { |e| [:tree, :submodule].index(e[:type]) }) +
28
28
  sort(tree.entries.select { |e| e[:type] == :blob })
29
29
  end
30
30
 
@@ -21,10 +21,50 @@ require "time"
21
21
 
22
22
  describe Dolt::Git::Repository do
23
23
  include EM::MiniTest::Spec
24
+ before { @repository = Dolt::Git::Repository.new(".") }
24
25
 
25
- describe "#blame" do
26
- before { @repository = Dolt::Git::Repository.new(".") }
26
+ describe "#submodules" do
27
+ it "returns deferrable" do
28
+ deferrable = @repository.submodules("master")
29
+ assert deferrable.respond_to?(:callback)
30
+ assert deferrable.respond_to?(:errback)
31
+ end
27
32
 
33
+ it "yields list of submodules" do
34
+ @repository.submodules("c1f6cd9").callback do |submodules|
35
+ url = "git://gitorious.org/gitorious/ui3.git"
36
+ assert_equal [{ :path => "vendor/ui", :url => url }], submodules
37
+ done!
38
+ end
39
+ wait!
40
+ end
41
+
42
+ it "resolves with empty array if no submodules" do
43
+ @repository.submodules("26139a3").callback do |submodules|
44
+ assert_equal [], submodules
45
+ done!
46
+ end
47
+ wait!
48
+ end
49
+ end
50
+
51
+ describe "#tree" do
52
+ it "includes submodule data for trees" do
53
+ @repository.tree("master", "vendor").callback do |tree|
54
+ assert_equal({
55
+ :type => :submodule,
56
+ :filemode => 57344,
57
+ :name => "ui",
58
+ :oid => "2b05baa5a2e626cb1a4c4b30299c1db5490979b7",
59
+ :url => "git://gitorious.org/gitorious/ui3.git"
60
+ }, tree.entries.first)
61
+ done!
62
+ end
63
+ wait!
64
+ end
65
+ end
66
+
67
+ describe "#blame" do
28
68
  it "returns deferrable" do
29
69
  deferrable = @repository.blame("master", "Gemfile")
30
70
  assert deferrable.respond_to?(:callback)
@@ -41,8 +81,6 @@ describe Dolt::Git::Repository do
41
81
  end
42
82
 
43
83
  describe "#log" do
44
- before { @repository = Dolt::Git::Repository.new(".") }
45
-
46
84
  it "returns deferrable" do
47
85
  deferrable = @repository.log("master", "Gemfile", 1)
48
86
  assert deferrable.respond_to?(:callback)
@@ -60,8 +98,6 @@ describe Dolt::Git::Repository do
60
98
  end
61
99
 
62
100
  describe "#tree_history" do
63
- before { @repository = Dolt::Git::Repository.new(".") }
64
-
65
101
  it "returns deferrable" do
66
102
  deferrable = @repository.tree_history("master", "")
67
103
  assert deferrable.respond_to?(:callback)
@@ -97,13 +133,13 @@ describe Dolt::Git::Repository do
97
133
  :filemode => 33188,
98
134
  :name => ".gitmodules",
99
135
  :history => [{
100
- :oid => "906d67b4f3e5de7364ba9b57d174d8998d53ced6",
101
- :author => { :name => "Christian Johansen",
102
- :email => "christian@cjohansen.no" },
103
- :summary => "Working Moron server for viewing blobs",
104
- :date => Time.parse("Mon Sep 10 15:07:39 +0200 2012"),
105
- :message => ""
106
- }]
136
+ :oid => "906d67b4f3e5de7364ba9b57d174d8998d53ced6",
137
+ :author => { :name => "Christian Johansen",
138
+ :email => "christian@cjohansen.no" },
139
+ :summary => "Working Moron server for viewing blobs",
140
+ :date => Time.parse("Mon Sep 10 15:07:39 +0200 2012"),
141
+ :message => ""
142
+ }]
107
143
  }
108
144
 
109
145
  assert_equal expected, log[0]
@@ -122,19 +158,19 @@ describe Dolt::Git::Repository do
122
158
 
123
159
  promise.callback do |log|
124
160
  expected = [{
125
- :type => :tree,
126
- :oid => "58f84405b588699b24c619aa4cd83669c5623f88",
127
- :filemode => 16384,
128
- :name => "dolt",
129
- :history => [{
130
- :oid => "8ab4f8c42511f727244a02aeee04824891610bbd",
131
- :author => { :name => "Christian Johansen",
132
- :email => "christian@gitorious.com" },
133
- :summary => "New version",
134
- :date => Time.parse("Mon Oct 1 16:34:00 +0200 2012"),
135
- :message => ""
136
- }]
137
- }]
161
+ :type => :tree,
162
+ :oid => "58f84405b588699b24c619aa4cd83669c5623f88",
163
+ :filemode => 16384,
164
+ :name => "dolt",
165
+ :history => [{
166
+ :oid => "8ab4f8c42511f727244a02aeee04824891610bbd",
167
+ :author => { :name => "Christian Johansen",
168
+ :email => "christian@gitorious.com" },
169
+ :summary => "New version",
170
+ :date => Time.parse("Mon Oct 1 16:34:00 +0200 2012"),
171
+ :message => ""
172
+ }]
173
+ }]
138
174
 
139
175
  assert_equal expected, log
140
176
  done!
@@ -23,6 +23,7 @@ require "ostruct"
23
23
  class Repository
24
24
  attr_reader :name
25
25
  def initialize(name); @name = name; end
26
+ def tree(ref, path); stub; end
26
27
  def rev_parse(rev); stub; end
27
28
  def blame(ref, path); stub; end
28
29
  def log(ref, path, limit); stub; end
@@ -61,11 +61,23 @@ describe Dolt::View::Object do
61
61
  end
62
62
  end
63
63
 
64
- it "returns blob icon type" do
65
- assert_equal "icon-file", object_icon_class({ :type => :blob })
64
+ describe "#object_icon_class" do
65
+ it "returns blob icon type" do
66
+ assert_equal "icon-file", object_icon_class({ :type => :blob })
67
+ end
68
+
69
+ it "returns tree icon type" do
70
+ assert_equal "icon-folder-close", object_icon_class({ :type => :tree })
71
+ end
72
+
73
+ it "returns submodule icon type" do
74
+ assert_equal "icon-hdd", object_icon_class({ :type => :submodule })
75
+ end
66
76
  end
67
77
 
68
- it "returns tree icon type" do
69
- assert_equal "icon-folder-close", object_icon_class({ :type => :tree })
78
+ it "links submodule object to submodule" do
79
+ url = "git://gitorious.org/gitorious/ui3.git"
80
+ object = { :type => :submodule, :url => url }
81
+ assert_equal url, object_url("gitorious", "master", "vendor", object)
70
82
  end
71
83
  end
@@ -70,6 +70,18 @@ describe Dolt::View::Tree do
70
70
  assert_equal "version.rb", entries[7][:name]
71
71
  assert_equal "view.rb", entries[8][:name]
72
72
  end
73
+
74
+ it "lumps submodules in with directories" do
75
+ async = { :name => "async", :type => :tree }
76
+ disk_repo_resolver = { :type => :blob, :name => "disk_repo_resolver.rb" }
77
+ git = { :type => :submodule, :name => "git" }
78
+ tree = OpenStruct.new({ :entries => [async, disk_repo_resolver, git] })
79
+ entries = tree_entries(tree)
80
+
81
+ assert_equal :tree, entries[0][:type]
82
+ assert_equal :submodule, entries[1][:type]
83
+ assert_equal :blob, entries[2][:type]
84
+ end
73
85
  end
74
86
 
75
87
  describe "#partition_path" do
@@ -4,7 +4,23 @@ this.gts = this.gts || {};
4
4
  this.gts.treeHistory = (function (c, $) {
5
5
  var th = function (table, url) {
6
6
  var cell = $(table).find("tbody tr:first td")[2];
7
- var spinner = new Spinner().spin(cell);
7
+ var spinner = new Spinner({
8
+ lines: 13,
9
+ length: 1,
10
+ width: 2,
11
+ radius: 6,
12
+ corners: 1,
13
+ rotate: 0,
14
+ color: "#000",
15
+ speed: 1,
16
+ trail: 60,
17
+ shadow: false,
18
+ hwaccel: true,
19
+ className: "spinner",
20
+ zIndex: 2e9,
21
+ top: "auto",
22
+ left: "auto"
23
+ }).spin(cell);
8
24
  $.ajax({
9
25
  url: url,
10
26
  success: function (tree) {
metadata CHANGED
@@ -1,233 +1,317 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dolt
3
- version: !ruby/object:Gem::Version
4
- version: 0.4.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 3
10
+ version: 0.4.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Christian Johansen
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-10-03 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-10-04 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: eventmachine
16
- requirement: &8310500 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
17
25
  none: false
18
- requirements:
26
+ requirements:
19
27
  - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.0'
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 1
32
+ - 0
33
+ version: "1.0"
22
34
  type: :runtime
23
- prerelease: false
24
- version_requirements: *8310500
25
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
26
37
  name: thin
27
- requirement: &8309280 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
28
40
  none: false
29
- requirements:
41
+ requirements:
30
42
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '1.4'
43
+ - !ruby/object:Gem::Version
44
+ hash: 7
45
+ segments:
46
+ - 1
47
+ - 4
48
+ version: "1.4"
33
49
  type: :runtime
34
- prerelease: false
35
- version_requirements: *8309280
36
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
37
52
  name: sinatra
38
- requirement: &8308460 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
39
55
  none: false
40
- requirements:
56
+ requirements:
41
57
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '1.3'
58
+ - !ruby/object:Gem::Version
59
+ hash: 9
60
+ segments:
61
+ - 1
62
+ - 3
63
+ version: "1.3"
44
64
  type: :runtime
45
- prerelease: false
46
- version_requirements: *8308460
47
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
48
67
  name: async_sinatra
49
- requirement: &8307760 !ruby/object:Gem::Requirement
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
50
70
  none: false
51
- requirements:
71
+ requirements:
52
72
  - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '1.0'
73
+ - !ruby/object:Gem::Version
74
+ hash: 15
75
+ segments:
76
+ - 1
77
+ - 0
78
+ version: "1.0"
55
79
  type: :runtime
56
- prerelease: false
57
- version_requirements: *8307760
58
- - !ruby/object:Gem::Dependency
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
59
82
  name: tilt
60
- requirement: &8306920 !ruby/object:Gem::Requirement
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
61
85
  none: false
62
- requirements:
86
+ requirements:
63
87
  - - ~>
64
- - !ruby/object:Gem::Version
65
- version: '1.3'
88
+ - !ruby/object:Gem::Version
89
+ hash: 9
90
+ segments:
91
+ - 1
92
+ - 3
93
+ version: "1.3"
66
94
  type: :runtime
67
- prerelease: false
68
- version_requirements: *8306920
69
- - !ruby/object:Gem::Dependency
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
70
97
  name: pygments.rb
71
- requirement: &8306100 !ruby/object:Gem::Requirement
98
+ prerelease: false
99
+ requirement: &id006 !ruby/object:Gem::Requirement
72
100
  none: false
73
- requirements:
101
+ requirements:
74
102
  - - ~>
75
- - !ruby/object:Gem::Version
76
- version: '0.2'
103
+ - !ruby/object:Gem::Version
104
+ hash: 15
105
+ segments:
106
+ - 0
107
+ - 2
108
+ version: "0.2"
77
109
  type: :runtime
78
- prerelease: false
79
- version_requirements: *8306100
80
- - !ruby/object:Gem::Dependency
110
+ version_requirements: *id006
111
+ - !ruby/object:Gem::Dependency
81
112
  name: em_pessimistic
82
- requirement: &8730940 !ruby/object:Gem::Requirement
113
+ prerelease: false
114
+ requirement: &id007 !ruby/object:Gem::Requirement
83
115
  none: false
84
- requirements:
116
+ requirements:
85
117
  - - ~>
86
- - !ruby/object:Gem::Version
87
- version: '0.1'
118
+ - !ruby/object:Gem::Version
119
+ hash: 9
120
+ segments:
121
+ - 0
122
+ - 1
123
+ version: "0.1"
88
124
  type: :runtime
89
- prerelease: false
90
- version_requirements: *8730940
91
- - !ruby/object:Gem::Dependency
125
+ version_requirements: *id007
126
+ - !ruby/object:Gem::Dependency
92
127
  name: builder
93
- requirement: &8729300 !ruby/object:Gem::Requirement
128
+ prerelease: false
129
+ requirement: &id008 !ruby/object:Gem::Requirement
94
130
  none: false
95
- requirements:
131
+ requirements:
96
132
  - - ~>
97
- - !ruby/object:Gem::Version
98
- version: '3.1'
133
+ - !ruby/object:Gem::Version
134
+ hash: 5
135
+ segments:
136
+ - 3
137
+ - 1
138
+ version: "3.1"
99
139
  type: :runtime
100
- prerelease: false
101
- version_requirements: *8729300
102
- - !ruby/object:Gem::Dependency
140
+ version_requirements: *id008
141
+ - !ruby/object:Gem::Dependency
103
142
  name: em_rugged
104
- requirement: &8728260 !ruby/object:Gem::Requirement
143
+ prerelease: false
144
+ requirement: &id009 !ruby/object:Gem::Requirement
105
145
  none: false
106
- requirements:
146
+ requirements:
107
147
  - - ~>
108
- - !ruby/object:Gem::Version
148
+ - !ruby/object:Gem::Version
149
+ hash: 31
150
+ segments:
151
+ - 0
152
+ - 1
153
+ - 2
109
154
  version: 0.1.2
110
155
  type: :runtime
111
- prerelease: false
112
- version_requirements: *8728260
113
- - !ruby/object:Gem::Dependency
156
+ version_requirements: *id009
157
+ - !ruby/object:Gem::Dependency
114
158
  name: tzinfo
115
- requirement: &8727020 !ruby/object:Gem::Requirement
159
+ prerelease: false
160
+ requirement: &id010 !ruby/object:Gem::Requirement
116
161
  none: false
117
- requirements:
162
+ requirements:
118
163
  - - ~>
119
- - !ruby/object:Gem::Version
120
- version: '0.3'
164
+ - !ruby/object:Gem::Version
165
+ hash: 13
166
+ segments:
167
+ - 0
168
+ - 3
169
+ version: "0.3"
121
170
  type: :runtime
122
- prerelease: false
123
- version_requirements: *8727020
124
- - !ruby/object:Gem::Dependency
171
+ version_requirements: *id010
172
+ - !ruby/object:Gem::Dependency
125
173
  name: github-markup
126
- requirement: &8725820 !ruby/object:Gem::Requirement
174
+ prerelease: false
175
+ requirement: &id011 !ruby/object:Gem::Requirement
127
176
  none: false
128
- requirements:
177
+ requirements:
129
178
  - - ~>
130
- - !ruby/object:Gem::Version
131
- version: '0.7'
179
+ - !ruby/object:Gem::Version
180
+ hash: 5
181
+ segments:
182
+ - 0
183
+ - 7
184
+ version: "0.7"
132
185
  type: :runtime
133
- prerelease: false
134
- version_requirements: *8725820
135
- - !ruby/object:Gem::Dependency
186
+ version_requirements: *id011
187
+ - !ruby/object:Gem::Dependency
136
188
  name: htmlentities
137
- requirement: &8724700 !ruby/object:Gem::Requirement
189
+ prerelease: false
190
+ requirement: &id012 !ruby/object:Gem::Requirement
138
191
  none: false
139
- requirements:
192
+ requirements:
140
193
  - - ~>
141
- - !ruby/object:Gem::Version
142
- version: '4.3'
194
+ - !ruby/object:Gem::Version
195
+ hash: 29
196
+ segments:
197
+ - 4
198
+ - 3
199
+ version: "4.3"
143
200
  type: :runtime
144
- prerelease: false
145
- version_requirements: *8724700
146
- - !ruby/object:Gem::Dependency
201
+ version_requirements: *id012
202
+ - !ruby/object:Gem::Dependency
147
203
  name: json
148
- requirement: &8723460 !ruby/object:Gem::Requirement
204
+ prerelease: false
205
+ requirement: &id013 !ruby/object:Gem::Requirement
149
206
  none: false
150
- requirements:
207
+ requirements:
151
208
  - - ~>
152
- - !ruby/object:Gem::Version
153
- version: '1.7'
209
+ - !ruby/object:Gem::Version
210
+ hash: 1
211
+ segments:
212
+ - 1
213
+ - 7
214
+ version: "1.7"
154
215
  type: :runtime
155
- prerelease: false
156
- version_requirements: *8723460
157
- - !ruby/object:Gem::Dependency
216
+ version_requirements: *id013
217
+ - !ruby/object:Gem::Dependency
158
218
  name: mime-types
159
- requirement: &8718680 !ruby/object:Gem::Requirement
219
+ prerelease: false
220
+ requirement: &id014 !ruby/object:Gem::Requirement
160
221
  none: false
161
- requirements:
222
+ requirements:
162
223
  - - ~>
163
- - !ruby/object:Gem::Version
164
- version: '1.19'
224
+ - !ruby/object:Gem::Version
225
+ hash: 41
226
+ segments:
227
+ - 1
228
+ - 19
229
+ version: "1.19"
165
230
  type: :runtime
166
- prerelease: false
167
- version_requirements: *8718680
168
- - !ruby/object:Gem::Dependency
231
+ version_requirements: *id014
232
+ - !ruby/object:Gem::Dependency
169
233
  name: minitest
170
- requirement: &8717000 !ruby/object:Gem::Requirement
234
+ prerelease: false
235
+ requirement: &id015 !ruby/object:Gem::Requirement
171
236
  none: false
172
- requirements:
237
+ requirements:
173
238
  - - ~>
174
- - !ruby/object:Gem::Version
175
- version: '2.0'
239
+ - !ruby/object:Gem::Version
240
+ hash: 3
241
+ segments:
242
+ - 2
243
+ - 0
244
+ version: "2.0"
176
245
  type: :development
177
- prerelease: false
178
- version_requirements: *8717000
179
- - !ruby/object:Gem::Dependency
246
+ version_requirements: *id015
247
+ - !ruby/object:Gem::Dependency
180
248
  name: em-minitest-spec
181
- requirement: &8715020 !ruby/object:Gem::Requirement
249
+ prerelease: false
250
+ requirement: &id016 !ruby/object:Gem::Requirement
182
251
  none: false
183
- requirements:
252
+ requirements:
184
253
  - - ~>
185
- - !ruby/object:Gem::Version
186
- version: '1.1'
254
+ - !ruby/object:Gem::Version
255
+ hash: 13
256
+ segments:
257
+ - 1
258
+ - 1
259
+ version: "1.1"
187
260
  type: :development
188
- prerelease: false
189
- version_requirements: *8715020
190
- - !ruby/object:Gem::Dependency
261
+ version_requirements: *id016
262
+ - !ruby/object:Gem::Dependency
191
263
  name: rake
192
- requirement: &8713460 !ruby/object:Gem::Requirement
264
+ prerelease: false
265
+ requirement: &id017 !ruby/object:Gem::Requirement
193
266
  none: false
194
- requirements:
267
+ requirements:
195
268
  - - ~>
196
- - !ruby/object:Gem::Version
197
- version: '0.9'
269
+ - !ruby/object:Gem::Version
270
+ hash: 25
271
+ segments:
272
+ - 0
273
+ - 9
274
+ version: "0.9"
198
275
  type: :development
199
- prerelease: false
200
- version_requirements: *8713460
201
- - !ruby/object:Gem::Dependency
276
+ version_requirements: *id017
277
+ - !ruby/object:Gem::Dependency
202
278
  name: mocha
203
- requirement: &8711900 !ruby/object:Gem::Requirement
279
+ prerelease: false
280
+ requirement: &id018 !ruby/object:Gem::Requirement
204
281
  none: false
205
- requirements:
206
- - - ! '>='
207
- - !ruby/object:Gem::Version
208
- version: '0'
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ hash: 3
286
+ segments:
287
+ - 0
288
+ version: "0"
209
289
  type: :development
210
- prerelease: false
211
- version_requirements: *8711900
212
- - !ruby/object:Gem::Dependency
290
+ version_requirements: *id018
291
+ - !ruby/object:Gem::Dependency
213
292
  name: redcarpet
214
- requirement: &8707280 !ruby/object:Gem::Requirement
293
+ prerelease: false
294
+ requirement: &id019 !ruby/object:Gem::Requirement
215
295
  none: false
216
- requirements:
217
- - - ! '>='
218
- - !ruby/object:Gem::Version
219
- version: '0'
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ hash: 3
300
+ segments:
301
+ - 0
302
+ version: "0"
220
303
  type: :development
221
- prerelease: false
222
- version_requirements: *8707280
304
+ version_requirements: *id019
223
305
  description: Dolt serves git trees and syntax highlighted blobs
224
- email:
306
+ email:
225
307
  - christian@gitorious.org
226
- executables:
308
+ executables:
227
309
  - dolt
228
310
  extensions: []
311
+
229
312
  extra_rdoc_files: []
230
- files:
313
+
314
+ files:
231
315
  - ./.gitmodules
232
316
  - ./Gemfile
233
317
  - ./Gemfile.lock
@@ -240,6 +324,8 @@ files:
240
324
  - ./lib/dolt/git/blame.rb
241
325
  - ./lib/dolt/git/commit.rb
242
326
  - ./lib/dolt/git/repository.rb
327
+ - ./lib/dolt/git/submodule.rb
328
+ - ./lib/dolt/git/tree.rb
243
329
  - ./lib/dolt/repo_actions.rb
244
330
  - ./lib/dolt/sinatra/actions.rb
245
331
  - ./lib/dolt/sinatra/base.rb
@@ -329,28 +415,39 @@ files:
329
415
  - vendor/ui/test/tree-history-test.js
330
416
  - vendor/ui/test/url-template-test.js
331
417
  - bin/dolt
418
+ has_rdoc: true
332
419
  homepage: http://gitorious.org/gitorious/dolt
333
420
  licenses: []
421
+
334
422
  post_install_message:
335
423
  rdoc_options: []
336
- require_paths:
424
+
425
+ require_paths:
337
426
  - lib
338
- required_ruby_version: !ruby/object:Gem::Requirement
427
+ required_ruby_version: !ruby/object:Gem::Requirement
339
428
  none: false
340
- requirements:
341
- - - ! '>='
342
- - !ruby/object:Gem::Version
343
- version: '0'
344
- required_rubygems_version: !ruby/object:Gem::Requirement
429
+ requirements:
430
+ - - ">="
431
+ - !ruby/object:Gem::Version
432
+ hash: 3
433
+ segments:
434
+ - 0
435
+ version: "0"
436
+ required_rubygems_version: !ruby/object:Gem::Requirement
345
437
  none: false
346
- requirements:
347
- - - ! '>='
348
- - !ruby/object:Gem::Version
349
- version: '0'
438
+ requirements:
439
+ - - ">="
440
+ - !ruby/object:Gem::Version
441
+ hash: 3
442
+ segments:
443
+ - 0
444
+ version: "0"
350
445
  requirements: []
446
+
351
447
  rubyforge_project: dolt
352
- rubygems_version: 1.8.11
448
+ rubygems_version: 1.4.2
353
449
  signing_key:
354
450
  specification_version: 3
355
451
  summary: Dolt serves git trees and syntax highlighted blobs
356
452
  test_files: []
453
+