dolt 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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
+