6
6
# install dependencies
7
7
# sudo gem install camping-omnibus --source http://code.whytheluckystiff.net
8
8
#
9
+ # todo
10
+ # - diff/patch between any two objects
11
+ #
9
12
# author : scott chacon
10
13
#
11
14
@@ -26,13 +29,7 @@ def self.up
26
29
end
27
30
28
31
module GitWeb ::Controllers
29
- class Index < R '/'
30
- def get
31
- @repos = Repository . find :all
32
- render :index
33
- end
34
- end
35
-
32
+
36
33
class Stylesheet < R '/css/highlight.css'
37
34
def get
38
35
@headers [ 'Content-Type' ] = 'text/css'
@@ -48,21 +45,14 @@ def get
48
45
end
49
46
end
50
47
51
- class View < R '/view/(\d+)'
52
- def get repo_id
53
- @repo = Repository . find repo_id
54
- @git = Git . bare ( @repo . path )
55
- render :view
56
- end
57
- end
58
48
59
- class Fetch < R '/git/(\d+) '
60
- def get repo_id
61
- @repo = Repository . find repo_id
62
- @git = Git . bare ( @repo . path )
49
+ class Index < R '/'
50
+ def get
51
+ @repos = Repository . find :all
52
+ render :index
63
53
end
64
54
end
65
-
55
+
66
56
class Add < R '/add'
67
57
def get
68
58
@repo = Repository . new
@@ -77,7 +67,33 @@ def post
77
67
end
78
68
end
79
69
end
80
-
70
+
71
+ class RemoveRepo < R '/remove/(\d+)'
72
+ def get repo_id
73
+ @repo = Repository . find repo_id
74
+ @repo . destroy
75
+ @repos = Repository . find :all
76
+ render :index
77
+ end
78
+ end
79
+
80
+
81
+ class View < R '/view/(\d+)'
82
+ def get repo_id
83
+ @repo = Repository . find repo_id
84
+ @git = Git . bare ( @repo . path )
85
+ render :view
86
+ end
87
+ end
88
+
89
+ class Fetch < R '/git/(\d+)/(.*)'
90
+ def get repo_id , path
91
+ @repo = Repository . find repo_id
92
+ @git = Git . bare ( @repo . path )
93
+ File . read ( File . join ( @git . repo . path , path ) )
94
+ end
95
+ end
96
+
81
97
class Commit < R '/commit/(\d+)/(\w+)'
82
98
def get repo_id , sha
83
99
@repo = Repository . find repo_id
@@ -181,14 +197,16 @@ def layout
181
197
end
182
198
end
183
199
200
+ # git repo views
201
+
184
202
def view
185
203
h1 @repo . name
186
204
h2 @repo . path
187
205
188
206
@tags = { }
189
207
@git . tags . each { |tag | @tags [ tag . sha ] ||= [ ] ; @tags [ tag . sha ] << tag . name }
190
208
191
- url = 'http:' + URL ( Fetch , @repo . id ) . to_s
209
+ url = 'http:' + URL ( Fetch , @repo . id , '' ) . to_s
192
210
193
211
h3 'info'
194
212
table . info do
@@ -323,11 +341,7 @@ def diff
323
341
end
324
342
end
325
343
326
-
327
- def cycle ( v1 , v2 )
328
- ( @value == v1 ) ? @value = v2 : @value = v1
329
- @value
330
- end
344
+ # repo management views
331
345
332
346
def add
333
347
_form ( @repo )
@@ -352,12 +366,22 @@ def _form(repo)
352
366
def index
353
367
@repos . each do | repo |
354
368
h1 repo . name
369
+ a 'remove' , :href => R ( RemoveRepo , repo . id )
370
+ span . space ' '
355
371
a repo . path , :href => R ( View , repo . id )
356
372
end
357
373
br
358
374
br
359
375
a 'add new repo' , :href => R ( Add )
360
376
end
377
+
378
+ # convenience functions
379
+
380
+ def cycle ( v1 , v2 )
381
+ ( @value == v1 ) ? @value = v2 : @value = v1
382
+ @value
383
+ end
384
+
361
385
end
362
386
363
387
def GitWeb . create
0 commit comments