@@ -26,10 +26,11 @@ def self.find_all
26
26
GitWiki . all_page_blobs . map { |blob | new ( blob ) }
27
27
end
28
28
29
- def self . find_or_create ( name )
29
+ def self . find_or_create ( name , rev = nil )
30
30
path = name + GitWiki . extension
31
- blob = GitWiki . repository . tree /path
32
- new ( blob || Grit ::Blob . create ( GitWiki . repository , :name => path ) )
31
+ tree = rev ? GitWiki . repository . commit ( rev ) . tree : GitWiki . repository . tree
32
+ blob = tree /path || Grit ::Blob . create ( GitWiki . repository , :name => path )
33
+ new ( blob )
33
34
end
34
35
35
36
def self . wikify ( content )
@@ -57,6 +58,10 @@ def edit_url
57
58
"/pages/#{ to_s } /edit"
58
59
end
59
60
61
+ def log_url
62
+ "/pages/#{ to_s } /revisions/"
63
+ end
64
+
60
65
def css_class
61
66
@blob . id ? 'existing' : 'new'
62
67
end
@@ -69,6 +74,10 @@ def to_html
69
74
Page . wikify ( RDiscount . new ( content ) . to_html )
70
75
end
71
76
77
+ def log
78
+ GitWiki . repository . log ( 'master' , @blob . name ) . map { |commit | commit . to_hash }
79
+ end
80
+
72
81
def save! ( data , msg )
73
82
msg = "web commit: #{ self } " if msg . empty?
74
83
Dir . chdir ( GitWiki . repository . working_dir ) do
@@ -96,6 +105,16 @@ def save!(data, msg)
96
105
haml :show
97
106
end
98
107
108
+ get '/pages/:page/revisions/' do
109
+ @page = Page . find_or_create ( params [ :page ] )
110
+ haml :log
111
+ end
112
+
113
+ get '/pages/:page/revisions/:rev' do
114
+ @page = Page . find_or_create ( params [ :page ] , params [ :rev ] )
115
+ haml :show
116
+ end
117
+
99
118
get '/pages/:page/edit' do
100
119
@page = Page . find_or_create ( params [ :page ] )
101
120
haml :edit
0 commit comments