gitoe 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +12 -15
- data/Rakefile +6 -1
- data/bin/gitoe +22 -18
- data/content/gitoe-repo.coffee +198 -119
- data/content/gitoe.coffee +1 -0
- data/content/index.haml +3 -2
- data/content/moment.min.js +6 -0
- data/content/style.sass +19 -9
- data/lib/gitoe/httpserver/public/gitoe-repo.js +40 -16
- data/lib/gitoe/httpserver/public/gitoe.js +1 -1
- data/lib/gitoe/httpserver/public/index.html +3 -2
- data/lib/gitoe/httpserver/public/moment.min.js +6 -0
- data/lib/gitoe/httpserver/public/style.css +15 -10
- data/lib/gitoe/version.rb +1 -1
- data/todo.markdown +7 -0
- data/vendor/moment.min.js +6 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cd8e211e54d2e535132c5285ff672eea4e787bb
|
4
|
+
data.tar.gz: 379eef1455b57234941a4af6ff15f8eba8d4cb2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91822f7bf98ddec4de8ee0e808014e78e5af75611ece844eda46fa0c6bd77d36e7a0bc72fa333cd7a70ab14f5782ebd7f108d0db73ff08559a2d22fb68d35754
|
7
|
+
data.tar.gz: aee445070c39568999bdcdab8ab30ebee87fb6689090d60d2c9c1a17e95ac841b73f60414b9e0412895cea35f6e1c121f6c66283a71bdc74b37c9dcb642968c9
|
data/Gemfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
# XXX a working version over https://github.com/guard/guard-nanoc.git
|
4
|
-
gem "guard-nanoc", :git => "https://github.com/nanoc/guard-nanoc.git"
|
4
|
+
# gem "guard-nanoc", :git => "https://github.com/nanoc/guard-nanoc.git"
|
5
5
|
|
6
6
|
# Specify your gem's dependencies in gitoe.gemspec
|
7
7
|
gemspec
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
GIT
|
2
|
-
remote: https://github.com/nanoc/guard-nanoc.git
|
3
|
-
revision: ab6d3a3f19b73b37b1cff8e12bfae527bf63c98b
|
4
|
-
specs:
|
5
|
-
guard-nanoc (1.0.0b1)
|
6
|
-
|
7
1
|
PATH
|
8
2
|
remote: .
|
9
3
|
specs:
|
@@ -38,19 +32,22 @@ GEM
|
|
38
32
|
lumberjack (>= 1.0.2)
|
39
33
|
pry (>= 0.9.10)
|
40
34
|
thor (>= 0.14.6)
|
41
|
-
|
35
|
+
guard-nanoc (1.0.1)
|
36
|
+
guard (>= 1.8.0)
|
37
|
+
nanoc (>= 3.6.3)
|
38
|
+
haml (4.0.3)
|
42
39
|
tilt
|
43
40
|
i18n (0.6.1)
|
44
|
-
listen (1.
|
41
|
+
listen (1.1.6)
|
45
42
|
rb-fsevent (>= 0.9.3)
|
46
43
|
rb-inotify (>= 0.9)
|
47
44
|
rb-kqueue (>= 0.2)
|
48
45
|
lumberjack (1.0.3)
|
49
46
|
method_source (0.8.1)
|
50
|
-
multi_json (1.7.
|
51
|
-
nanoc (3.6.
|
47
|
+
multi_json (1.7.6)
|
48
|
+
nanoc (3.6.4)
|
52
49
|
cri (~> 2.3)
|
53
|
-
pry (0.9.12.
|
50
|
+
pry (0.9.12.2)
|
54
51
|
coderay (~> 1.0.5)
|
55
52
|
method_source (~> 0.8)
|
56
53
|
slop (~> 3.4)
|
@@ -63,18 +60,18 @@ GEM
|
|
63
60
|
rb-kqueue (0.2.0)
|
64
61
|
ffi (>= 0.5.0)
|
65
62
|
rugged (0.16.0)
|
66
|
-
sass (3.2.
|
63
|
+
sass (3.2.9)
|
67
64
|
sinatra (1.4.2)
|
68
65
|
rack (~> 1.5, >= 1.5.2)
|
69
66
|
rack-protection (~> 1.4)
|
70
67
|
tilt (~> 1.3, >= 1.3.4)
|
71
|
-
slop (3.4.
|
68
|
+
slop (3.4.5)
|
72
69
|
thin (1.5.1)
|
73
70
|
daemons (>= 1.0.9)
|
74
71
|
eventmachine (>= 0.12.6)
|
75
72
|
rack (>= 1.0.0)
|
76
73
|
thor (0.18.1)
|
77
|
-
tilt (1.
|
74
|
+
tilt (1.4.1)
|
78
75
|
|
79
76
|
PLATFORMS
|
80
77
|
ruby
|
@@ -83,7 +80,7 @@ DEPENDENCIES
|
|
83
80
|
coffee-script
|
84
81
|
gitoe!
|
85
82
|
guard
|
86
|
-
guard-nanoc
|
83
|
+
guard-nanoc
|
87
84
|
haml
|
88
85
|
nanoc (>= 3.6.3)
|
89
86
|
pry
|
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ end
|
|
8
8
|
desc "gitoe (development)"
|
9
9
|
task :run do
|
10
10
|
ENV["RACK_ENV"] = "development"
|
11
|
-
sh "bundle exec gitoe"
|
11
|
+
sh "bundle exec gitoe -o --port=3000"
|
12
12
|
end
|
13
13
|
|
14
14
|
desc "gitoe (production)"
|
@@ -17,6 +17,11 @@ task :production do
|
|
17
17
|
sh "bundle exec gitoe"
|
18
18
|
end
|
19
19
|
|
20
|
+
task :demo do
|
21
|
+
ENV["RACK_ENV"] = "production"
|
22
|
+
sh "bundle exec gitoe -o --port=12345"
|
23
|
+
end
|
24
|
+
|
20
25
|
desc "watch and re-compile with guard"
|
21
26
|
task :guard do
|
22
27
|
sh "bundle exec guard"
|
data/bin/gitoe
CHANGED
@@ -1,27 +1,31 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'optparse'
|
4
|
+
|
4
5
|
require "gitoe/httpserver/static"
|
5
6
|
require "gitoe/httpserver/repos"
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
begin
|
17
|
-
require "mongrel"
|
18
|
-
Rack::Handler::Mongrel
|
19
|
-
rescue LoadError
|
20
|
-
false
|
8
|
+
handler_options = {
|
9
|
+
Port: 3000,
|
10
|
+
Host: '127.0.0.1',
|
11
|
+
}
|
12
|
+
|
13
|
+
OptionParser.new do |opts|
|
14
|
+
opts.banner = "Usage: gitoe [options]"
|
15
|
+
opts.on("-p N", "--port N", "port to listen on, default: 3000") do |port|
|
16
|
+
handler_options[ :Port ] = port.to_i
|
21
17
|
end
|
18
|
+
opts.on("-o", "--open", "open to non-localhost access") do
|
19
|
+
handler_options[ :Host ] = '0.0.0.0'
|
20
|
+
end
|
21
|
+
end.parse!
|
22
|
+
|
23
|
+
handlers = [ :Thin, :Mongrel, :WEBrick ]
|
24
|
+
handler_name = handlers[
|
25
|
+
handlers.find_index {|h| Rack::Handler.const_defined? h }
|
26
|
+
]
|
22
27
|
|
23
|
-
handler
|
24
|
-
Rack::Handler::WEBrick
|
28
|
+
handler = Rack::Handler::const_get handler_name
|
25
29
|
|
26
30
|
root = Rack::Builder.new do
|
27
31
|
|
@@ -33,4 +37,4 @@ end
|
|
33
37
|
|
34
38
|
root = Rack::Reloader.new(root,cooldown=0) if ENV["RACK_ENV"]=="development"
|
35
39
|
|
36
|
-
handler.run root,
|
40
|
+
handler.run root, handler_options
|
data/content/gitoe-repo.coffee
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
$ = jQuery or throw "demand jQuery"
|
2
|
+
moment or throw "demand moment"
|
2
3
|
|
3
4
|
url_root = "/repo"
|
4
5
|
|
@@ -211,6 +212,23 @@ class GitoeChange
|
|
211
212
|
@span sha1, "sha1_commit"
|
212
213
|
br: ->
|
213
214
|
$('<br>')
|
215
|
+
pretty_abs_time: (change)->
|
216
|
+
@span moment.unix( change.committer.time ).format("YYYY-MM-DD HH:mm:ss"), "git_abs_time"
|
217
|
+
pretty_relative_time: (change)->
|
218
|
+
@span moment.unix( change.committer.time ).fromNow(), "git_rel_time"
|
219
|
+
p_with_time: (change, elems)->
|
220
|
+
@p [
|
221
|
+
@pretty_abs_time change
|
222
|
+
@span " / "
|
223
|
+
@pretty_relative_time change
|
224
|
+
@span " : "
|
225
|
+
elems...
|
226
|
+
]
|
227
|
+
p: ( elements )->
|
228
|
+
ret = $('<p>')
|
229
|
+
for e in elements
|
230
|
+
ret.append e
|
231
|
+
ret
|
214
232
|
}
|
215
233
|
|
216
234
|
@message_rules = {
|
@@ -235,175 +253,236 @@ class GitoeChange
|
|
235
253
|
actions : {
|
236
254
|
clone: (matched,change)->
|
237
255
|
@li [
|
238
|
-
@
|
239
|
-
|
240
|
-
|
241
|
-
@
|
242
|
-
|
256
|
+
@p_with_time change, [
|
257
|
+
@git_command "git clone"
|
258
|
+
]
|
259
|
+
@p [
|
260
|
+
@span "create "
|
261
|
+
@ref (@ref_fullname change)
|
262
|
+
@span " at "
|
263
|
+
@sha1_commit change.oid_new
|
264
|
+
]
|
243
265
|
]
|
244
266
|
branch: (matched, change)->
|
245
267
|
# TODO show position better
|
246
268
|
@li [
|
247
|
-
@
|
248
|
-
|
249
|
-
|
250
|
-
@
|
251
|
-
|
252
|
-
|
253
|
-
@span "
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
269
|
+
@p_with_time change, [
|
270
|
+
@git_command "git branch"
|
271
|
+
]
|
272
|
+
@p [
|
273
|
+
@span "create branch "
|
274
|
+
@ref (@ref_fullname change)
|
275
|
+
@span " at "
|
276
|
+
@sha1_commit change.oid_new
|
277
|
+
if /^refs/.test matched[1]
|
278
|
+
@span " (was "
|
279
|
+
if /^refs/.test matched[1]
|
280
|
+
@ref @ref_realname(matched[1])
|
281
|
+
if /^refs/.test matched[1]
|
282
|
+
@span " )"
|
283
|
+
]
|
258
284
|
]
|
259
285
|
commit: (matched, change)->
|
260
286
|
@li [
|
261
|
-
@
|
262
|
-
|
263
|
-
|
264
|
-
@
|
265
|
-
|
266
|
-
|
267
|
-
|
287
|
+
@p_with_time change, [
|
288
|
+
@git_command "git commit"
|
289
|
+
]
|
290
|
+
@p [
|
291
|
+
@span "move "
|
292
|
+
@ref (@ref_fullname change)
|
293
|
+
@span " from "
|
294
|
+
@sha1_commit change.oid_old
|
295
|
+
@span " to "
|
296
|
+
@sha1_commit change.oid_new
|
297
|
+
]
|
268
298
|
]
|
269
299
|
merge_commit: (matched, change)->
|
270
300
|
@li [
|
271
|
-
@
|
272
|
-
|
273
|
-
|
274
|
-
@
|
275
|
-
|
276
|
-
|
277
|
-
|
301
|
+
@p_with_time change, [
|
302
|
+
@git_command "git merge"
|
303
|
+
]
|
304
|
+
@p [
|
305
|
+
@span "move "
|
306
|
+
@span matched[2], "ref_name"
|
307
|
+
@span ' to '
|
308
|
+
@sha1_commit change.oid_new
|
309
|
+
@span ' by merging '
|
310
|
+
@span matched[1], "ref_name"
|
311
|
+
]
|
278
312
|
]
|
279
313
|
commit_amend: (matched, change)->
|
280
314
|
@li [
|
281
|
-
@
|
282
|
-
|
283
|
-
|
284
|
-
@
|
285
|
-
|
286
|
-
|
287
|
-
|
315
|
+
@p_with_time change, [
|
316
|
+
@git_command "git commit --amend"
|
317
|
+
]
|
318
|
+
@p [
|
319
|
+
@span "move "
|
320
|
+
@ref (@ref_fullname change)
|
321
|
+
@span " from "
|
322
|
+
@sha1_commit change.oid_old
|
323
|
+
@span " to "
|
324
|
+
@sha1_commit change.oid_new
|
325
|
+
]
|
288
326
|
]
|
289
327
|
merge_ff: (matched, change)->
|
290
328
|
@li [
|
291
|
-
@
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
@
|
296
|
-
|
297
|
-
|
329
|
+
@p_with_time change, [
|
330
|
+
@git_command "git merge"
|
331
|
+
@span " (fast-forward)", "comment"
|
332
|
+
]
|
333
|
+
@p [
|
334
|
+
@span "move "
|
335
|
+
@ref (@ref_fullname change)
|
336
|
+
@span ' to '
|
337
|
+
@sha1_commit change.oid_new
|
338
|
+
@span ' by merging '
|
339
|
+
@span matched[1], "ref_name"
|
340
|
+
]
|
298
341
|
]
|
299
342
|
reset: (matched, change)->
|
300
343
|
@li [
|
301
|
-
@
|
302
|
-
|
303
|
-
|
304
|
-
@
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
344
|
+
@p_with_time change, [
|
345
|
+
@git_command "git reset"
|
346
|
+
]
|
347
|
+
@p [
|
348
|
+
@span "point "
|
349
|
+
@ref (@ref_fullname change)
|
350
|
+
@span " to "
|
351
|
+
@sha1_commit change.oid_new
|
352
|
+
@span "(was "
|
353
|
+
@sha1_commit change.oid_old
|
354
|
+
@span ")"
|
355
|
+
]
|
309
356
|
]
|
310
357
|
push: (matched, change)->
|
311
358
|
@li [
|
312
|
-
@
|
313
|
-
|
314
|
-
|
315
|
-
@
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
@span "
|
359
|
+
@p_with_time change, [
|
360
|
+
@git_command "git push"
|
361
|
+
]
|
362
|
+
@p [
|
363
|
+
@span "update "
|
364
|
+
@ref (@ref_fullname change)
|
365
|
+
if change.oid_old isnt "0000000000000000000000000000000000000000"
|
366
|
+
@span " from "
|
367
|
+
if change.oid_old isnt "0000000000000000000000000000000000000000"
|
368
|
+
@sha1_commit change.oid_old
|
369
|
+
@span " to "
|
370
|
+
@sha1_commit change.oid_new
|
371
|
+
]
|
323
372
|
]
|
324
373
|
fetch: (matched, change)->
|
325
374
|
@li [
|
326
|
-
@
|
327
|
-
|
328
|
-
|
329
|
-
@
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
@span "
|
375
|
+
@p_with_time change, [
|
376
|
+
@git_command "git fetch"
|
377
|
+
]
|
378
|
+
@p [
|
379
|
+
@span "update "
|
380
|
+
@ref (@ref_fullname change)
|
381
|
+
if change.oid_old isnt "0000000000000000000000000000000000000000"
|
382
|
+
@span " from "
|
383
|
+
if change.oid_old isnt "0000000000000000000000000000000000000000"
|
384
|
+
@sha1_commit change.oid_old
|
385
|
+
@span " to "
|
386
|
+
@sha1_commit change.oid_new
|
387
|
+
]
|
337
388
|
]
|
338
389
|
pull: (matched, change)->
|
339
390
|
@li [
|
340
|
-
@
|
341
|
-
|
342
|
-
|
343
|
-
@
|
344
|
-
|
345
|
-
|
346
|
-
|
391
|
+
@p_with_time change, [
|
392
|
+
@git_command "git pull"
|
393
|
+
]
|
394
|
+
@p [
|
395
|
+
@span "update "
|
396
|
+
@ref (@ref_fullname change)
|
397
|
+
@span " from "
|
398
|
+
@sha1_commit change.oid_old
|
399
|
+
@span " to "
|
400
|
+
@sha1_commit change.oid_new
|
401
|
+
]
|
347
402
|
]
|
348
403
|
checkout: (matched, change, rest)->
|
349
404
|
# TODO handle remaining "checkout SHA1" message of removed branch
|
350
405
|
@li [
|
351
|
-
@
|
352
|
-
|
353
|
-
|
354
|
-
@
|
355
|
-
|
406
|
+
@p_with_time change,[
|
407
|
+
@git_command "git checkout"
|
408
|
+
]
|
409
|
+
@p [
|
410
|
+
@span "checkout "
|
411
|
+
@ref matched[2]
|
412
|
+
@span " at "
|
413
|
+
@sha1_commit change.oid_new
|
414
|
+
]
|
356
415
|
]
|
357
416
|
rename_remote: (matched, change)->
|
358
417
|
@li [
|
359
|
-
@
|
360
|
-
|
361
|
-
|
362
|
-
@
|
363
|
-
|
418
|
+
@p_with_time change, [
|
419
|
+
@git_command "git remote rename"
|
420
|
+
]
|
421
|
+
@p [
|
422
|
+
@span "rename "
|
423
|
+
@ref @ref_realname(matched[1])
|
424
|
+
@span " to "
|
425
|
+
@ref @ref_realname(matched[2])
|
426
|
+
]
|
364
427
|
]
|
365
428
|
rebase_finish: (matched, change)->
|
366
429
|
@li [
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
@
|
374
|
-
|
430
|
+
@p_with_time change, [
|
431
|
+
if matched[1]
|
432
|
+
@git_command "git rebase #{matched[1]}"
|
433
|
+
else
|
434
|
+
@git_command "git rebase"
|
435
|
+
]
|
436
|
+
@p [
|
437
|
+
@span "rebase "
|
438
|
+
@ref @ref_realname(matched[2])
|
439
|
+
@span " to "
|
440
|
+
@sha1_commit change.oid_new
|
441
|
+
]
|
375
442
|
]
|
376
443
|
rebase_finish2: (matched, change)->
|
377
444
|
@li [
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
@
|
385
|
-
|
445
|
+
@p_with_time change, [
|
446
|
+
if matched[1]
|
447
|
+
@git_command "git rebase #{matched[1]}"
|
448
|
+
else
|
449
|
+
@git_command "git rebase"
|
450
|
+
]
|
451
|
+
@p [
|
452
|
+
@span "rebase "
|
453
|
+
@ref (@ref_fullname change)
|
454
|
+
@span " to "
|
455
|
+
@sha1_commit change.oid_new
|
456
|
+
]
|
386
457
|
]
|
387
458
|
rebase_finish3: (matched, change)->
|
388
459
|
@li [
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
@
|
396
|
-
|
460
|
+
@p_with_time change, [
|
461
|
+
if matched[1]
|
462
|
+
@git_command "git rebase #{matched[1]}"
|
463
|
+
else
|
464
|
+
@git_command "git rebase"
|
465
|
+
]
|
466
|
+
@p [
|
467
|
+
@span ": rebase "
|
468
|
+
@ref (@ref_fullname change)
|
469
|
+
@span " to "
|
470
|
+
@sha1_commit change.oid_new
|
471
|
+
]
|
397
472
|
]
|
398
473
|
rebase_abort: (matched, change, rest)->
|
399
474
|
if rest.length > 0
|
400
475
|
if matched_head = rest[0].message.match /^checkout: moving from ([^ ]+)/
|
401
476
|
real_ref = matched_head[1]
|
402
477
|
@li [
|
403
|
-
@
|
404
|
-
|
405
|
-
|
406
|
-
|
478
|
+
@p_with_time change, [
|
479
|
+
@git_command "git rebase --abort"
|
480
|
+
]
|
481
|
+
@p [
|
482
|
+
@span "didn't rebase "
|
483
|
+
if real_ref
|
484
|
+
@ref real_ref
|
485
|
+
]
|
407
486
|
]
|
408
487
|
}
|
409
488
|
}
|
data/content/gitoe.coffee
CHANGED
@@ -41,6 +41,7 @@ class GitoeUI
|
|
41
41
|
@elems = {}
|
42
42
|
|
43
43
|
repo_path = @elems.repo_path = $("<input>")
|
44
|
+
# repo_path = @elems.repo_path = $("<input>").val("/home/mono/gitoe") # test purpose
|
44
45
|
@elems.repo_open = $("<input>").attr( type: "button" ).val("open").on "click", ->
|
45
46
|
cb.repo_open? repo_path.val()
|
46
47
|
@elems.num_commits = $("<span>").text 0
|
data/content/index.haml
CHANGED
@@ -4,8 +4,9 @@
|
|
4
4
|
%link(rel="stylesheet" type="text/css" href="reset.css")
|
5
5
|
%link(rel="stylesheet" type="text/css" href="style.css")
|
6
6
|
%script(src="/jquery/jquery-1.9.1.min.js")
|
7
|
-
%script(src="
|
8
|
-
%script(src="
|
7
|
+
%script(src="jquery/jquery.scrollTo.min.js")
|
8
|
+
%script(src="raphael-min.js")
|
9
|
+
%script(src="moment.min.js")
|
9
10
|
%script(src="gitoe-repo.js")
|
10
11
|
%script(src="gitoe-draw.js")
|
11
12
|
%script(src="gitoe.js")
|
@@ -0,0 +1,6 @@
|
|
1
|
+
// moment.js
|
2
|
+
// version : 2.0.0
|
3
|
+
// author : Tim Wood
|
4
|
+
// license : MIT
|
5
|
+
// momentjs.com
|
6
|
+
(function(e){function O(e,t){return function(n){return j(e.call(this,n),t)}}function M(e){return function(t){return this.lang().ordinal(e.call(this,t))}}function _(){}function D(e){H(this,e)}function P(e){var t=this._data={},n=e.years||e.year||e.y||0,r=e.months||e.month||e.M||0,i=e.weeks||e.week||e.w||0,s=e.days||e.day||e.d||0,o=e.hours||e.hour||e.h||0,u=e.minutes||e.minute||e.m||0,a=e.seconds||e.second||e.s||0,f=e.milliseconds||e.millisecond||e.ms||0;this._milliseconds=f+a*1e3+u*6e4+o*36e5,this._days=s+i*7,this._months=r+n*12,t.milliseconds=f%1e3,a+=B(f/1e3),t.seconds=a%60,u+=B(a/60),t.minutes=u%60,o+=B(u/60),t.hours=o%24,s+=B(o/24),s+=i*7,t.days=s%30,r+=B(s/30),t.months=r%12,n+=B(r/12),t.years=n}function H(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function B(e){return e<0?Math.ceil(e):Math.floor(e)}function j(e,t){var n=e+"";while(n.length<t)n="0"+n;return n}function F(e,t,n){var r=t._milliseconds,i=t._days,s=t._months,o;r&&e._d.setTime(+e+r*n),i&&e.date(e.date()+i*n),s&&(o=e.date(),e.date(1).month(e.month()+s*n).date(Math.min(o,e.daysInMonth())))}function I(e){return Object.prototype.toString.call(e)==="[object Array]"}function q(e,t){var n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),i=0,s;for(s=0;s<n;s++)~~e[s]!==~~t[s]&&i++;return i+r}function R(e,t){return t.abbr=e,s[e]||(s[e]=new _),s[e].set(t),s[e]}function U(e){return e?(!s[e]&&o&&require("./lang/"+e),s[e]):t.fn._lang}function z(e){return e.match(/\[.*\]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function W(e){var t=e.match(a),n,r;for(n=0,r=t.length;n<r;n++)A[t[n]]?t[n]=A[t[n]]:t[n]=z(t[n]);return function(i){var s="";for(n=0;n<r;n++)s+=typeof t[n].call=="function"?t[n].call(i,e):t[n];return s}}function X(e,t){function r(t){return e.lang().longDateFormat(t)||t}var n=5;while(n--&&f.test(t))t=t.replace(f,r);return C[t]||(C[t]=W(t)),C[t](e)}function V(e){switch(e){case"DDDD":return p;case"YYYY":return d;case"YYYYY":return v;case"S":case"SS":case"SSS":case"DDD":return h;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return m;case"X":return b;case"Z":case"ZZ":return g;case"T":return y;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return c;default:return new RegExp(e.replace("\\",""))}}function $(e,t,n){var r,i,s=n._a;switch(e){case"M":case"MM":s[1]=t==null?0:~~t-1;break;case"MMM":case"MMMM":r=U(n._l).monthsParse(t),r!=null?s[1]=r:n._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":t!=null&&(s[2]=~~t);break;case"YY":s[0]=~~t+(~~t>68?1900:2e3);break;case"YYYY":case"YYYYY":s[0]=~~t;break;case"a":case"A":n._isPm=(t+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":s[3]=~~t;break;case"m":case"mm":s[4]=~~t;break;case"s":case"ss":s[5]=~~t;break;case"S":case"SS":case"SSS":s[6]=~~(("0."+t)*1e3);break;case"X":n._d=new Date(parseFloat(t)*1e3);break;case"Z":case"ZZ":n._useUTC=!0,r=(t+"").match(x),r&&r[1]&&(n._tzh=~~r[1]),r&&r[2]&&(n._tzm=~~r[2]),r&&r[0]==="+"&&(n._tzh=-n._tzh,n._tzm=-n._tzm)}t==null&&(n._isValid=!1)}function J(e){var t,n,r=[];if(e._d)return;for(t=0;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];r[3]+=e._tzh||0,r[4]+=e._tzm||0,n=new Date(0),e._useUTC?(n.setUTCFullYear(r[0],r[1],r[2]),n.setUTCHours(r[3],r[4],r[5],r[6])):(n.setFullYear(r[0],r[1],r[2]),n.setHours(r[3],r[4],r[5],r[6])),e._d=n}function K(e){var t=e._f.match(a),n=e._i,r,i;e._a=[];for(r=0;r<t.length;r++)i=(V(t[r]).exec(n)||[])[0],i&&(n=n.slice(n.indexOf(i)+i.length)),A[t[r]]&&$(t[r],i,e);e._isPm&&e._a[3]<12&&(e._a[3]+=12),e._isPm===!1&&e._a[3]===12&&(e._a[3]=0),J(e)}function Q(e){var t,n,r,i=99,s,o,u;while(e._f.length){t=H({},e),t._f=e._f.pop(),K(t),n=new D(t);if(n.isValid()){r=n;break}u=q(t._a,n.toArray()),u<i&&(i=u,r=n)}H(e,r)}function G(e){var t,n=e._i;if(w.exec(n)){e._f="YYYY-MM-DDT";for(t=0;t<4;t++)if(S[t][1].exec(n)){e._f+=S[t][0];break}g.exec(n)&&(e._f+=" Z"),K(e)}else e._d=new Date(n)}function Y(t){var n=t._i,r=u.exec(n);n===e?t._d=new Date:r?t._d=new Date(+r[1]):typeof n=="string"?G(t):I(n)?(t._a=n.slice(0),J(t)):t._d=n instanceof Date?new Date(+n):new Date(n)}function Z(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function et(e,t,n){var i=r(Math.abs(e)/1e3),s=r(i/60),o=r(s/60),u=r(o/24),a=r(u/365),f=i<45&&["s",i]||s===1&&["m"]||s<45&&["mm",s]||o===1&&["h"]||o<22&&["hh",o]||u===1&&["d"]||u<=25&&["dd",u]||u<=45&&["M"]||u<345&&["MM",r(u/30)]||a===1&&["y"]||["yy",a];return f[2]=t,f[3]=e>0,f[4]=n,Z.apply({},f)}function tt(e,n,r){var i=r-n,s=r-e.day();return s>i&&(s-=7),s<i-7&&(s+=7),Math.ceil(t(e).add("d",s).dayOfYear()/7)}function nt(e){var n=e._i,r=e._f;return n===null||n===""?null:(typeof n=="string"&&(e._i=n=U().preparse(n)),t.isMoment(n)?(e=H({},n),e._d=new Date(+n._d)):r?I(r)?Q(e):K(e):Y(e),new D(e))}function rt(e,n){t.fn[e]=t.fn[e+"s"]=function(e){var t=this._isUTC?"UTC":"";return e!=null?(this._d["set"+t+n](e),this):this._d["get"+t+n]()}}function it(e){t.duration.fn[e]=function(){return this._data[e]}}function st(e,n){t.duration.fn["as"+e]=function(){return+this/n}}var t,n="2.0.0",r=Math.round,i,s={},o=typeof module!="undefined"&&module.exports,u=/^\/?Date\((\-?\d+)/i,a=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,f=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,l=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,c=/\d\d?/,h=/\d{1,3}/,p=/\d{3}/,d=/\d{1,4}/,v=/[+\-]?\d{1,6}/,m=/[0-9]*[a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF]+\s*?[\u0600-\u06FF]+/i,g=/Z|[\+\-]\d\d:?\d\d/i,y=/T/i,b=/[\+\-]?\d+(\.\d{1,3})?/,w=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,E="YYYY-MM-DDTHH:mm:ssZ",S=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],x=/([\+\-]|\d\d)/gi,T="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),N={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},C={},k="DDD w W M D d".split(" "),L="M D H h m s w W".split(" "),A={M:function(){return this.month()+1},MMM:function(e){return this.lang().monthsShort(this,e)},MMMM:function(e){return this.lang().months(this,e)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(e){return this.lang().weekdaysMin(this,e)},ddd:function(e){return this.lang().weekdaysShort(this,e)},dddd:function(e){return this.lang().weekdays(this,e)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return j(this.year()%100,2)},YYYY:function(){return j(this.year(),4)},YYYYY:function(){return j(this.year(),5)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return j(~~(this.milliseconds()/10),2)},SSS:function(){return j(this.milliseconds(),3)},Z:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(e/60),2)+":"+j(~~e%60,2)},ZZ:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(10*e/6),4)},X:function(){return this.unix()}};while(k.length)i=k.pop(),A[i+"o"]=M(A[i]);while(L.length)i=L.pop(),A[i+i]=O(A[i],2);A.DDDD=O(A.DDD,3),_.prototype={set:function(e){var t,n;for(n in e)t=e[n],typeof t=="function"?this[n]=t:this["_"+n]=t},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(e){return this._months[e.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(e){return this._monthsShort[e.month()]},monthsParse:function(e){var n,r,i,s;this._monthsParse||(this._monthsParse=[]);for(n=0;n<12;n++){this._monthsParse[n]||(r=t([2e3,n]),i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(i.replace(".",""),"i"));if(this._monthsParse[n].test(e))return n}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(e){return this._weekdays[e.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(e){return this._weekdaysShort[e.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(e){return this._weekdaysMin[e.day()]},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(e){var t=this._longDateFormat[e];return!t&&this._longDateFormat[e.toUpperCase()]&&(t=this._longDateFormat[e.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e]=t),t},meridiem:function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},calendar:function(e,t){var n=this._calendar[e];return typeof n=="function"?n.apply(t):n},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(e,t,n,r){var i=this._relativeTime[n];return typeof i=="function"?i(e,t,n,r):i.replace(/%d/i,e)},pastFuture:function(e,t){var n=this._relativeTime[e>0?"future":"past"];return typeof n=="function"?n(t):n.replace(/%s/i,t)},ordinal:function(e){return this._ordinal.replace("%d",e)},_ordinal:"%d",preparse:function(e){return e},postformat:function(e){return e},week:function(e){return tt(e,this._week.dow,this._week.doy)},_week:{dow:0,doy:6}},t=function(e,t,n){return nt({_i:e,_f:t,_l:n,_isUTC:!1})},t.utc=function(e,t,n){return nt({_useUTC:!0,_isUTC:!0,_l:n,_i:e,_f:t})},t.unix=function(e){return t(e*1e3)},t.duration=function(e,n){var r=t.isDuration(e),i=typeof e=="number",s=r?e._data:i?{}:e,o;return i&&(n?s[n]=e:s.milliseconds=e),o=new P(s),r&&e.hasOwnProperty("_lang")&&(o._lang=e._lang),o},t.version=n,t.defaultFormat=E,t.lang=function(e,n){var r;if(!e)return t.fn._lang._abbr;n?R(e,n):s[e]||U(e),t.duration.fn._lang=t.fn._lang=U(e)},t.langData=function(e){return e&&e._lang&&e._lang._abbr&&(e=e._lang._abbr),U(e)},t.isMoment=function(e){return e instanceof D},t.isDuration=function(e){return e instanceof P},t.fn=D.prototype={clone:function(){return t(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._d},toJSON:function(){return t.utc(this).format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var e=this;return[e.year(),e.month(),e.date(),e.hours(),e.minutes(),e.seconds(),e.milliseconds()]},isValid:function(){return this._isValid==null&&(this._a?this._isValid=!q(this._a,(this._isUTC?t.utc(this._a):t(this._a)).toArray()):this._isValid=!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(e){var n=X(this,e||t.defaultFormat);return this.lang().postformat(n)},add:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,1),this},subtract:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,-1),this},diff:function(e,n,r){var i=this._isUTC?t(e).utc():t(e).local(),s=(this.zone()-i.zone())*6e4,o,u;return n&&(n=n.replace(/s$/,"")),n==="year"||n==="month"?(o=(this.daysInMonth()+i.daysInMonth())*432e5,u=(this.year()-i.year())*12+(this.month()-i.month()),u+=(this-t(this).startOf("month")-(i-t(i).startOf("month")))/o,n==="year"&&(u/=12)):(o=this-i-s,u=n==="second"?o/1e3:n==="minute"?o/6e4:n==="hour"?o/36e5:n==="day"?o/864e5:n==="week"?o/6048e5:o),r?u:B(u)},from:function(e,n){return t.duration(this.diff(e)).lang(this.lang()._abbr).humanize(!n)},fromNow:function(e){return this.from(t(),e)},calendar:function(){var e=this.diff(t().startOf("day"),"days",!0),n=e<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse";return this.format(this.lang().calendar(n,this))},isLeapYear:function(){var e=this.year();return e%4===0&&e%100!==0||e%400===0},isDST:function(){return this.zone()<t([this.year()]).zone()||this.zone()<t([this.year(),5]).zone()},day:function(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e==null?t:this.add({d:e-t})},startOf:function(e){e=e.replace(/s$/,"");switch(e){case"year":this.month(0);case"month":this.date(1);case"week":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return e==="week"&&this.day(0),this},endOf:function(e){return this.startOf(e).add(e.replace(/s?$/,"s"),1).subtract("ms",1)},isAfter:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)>+t(e).startOf(n)},isBefore:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)<+t(e).startOf(n)},isSame:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)===+t(e).startOf(n)},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return t.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(e){var n=r((t(this).startOf("day")-t(this).startOf("year"))/864e5)+1;return e==null?n:this.add("d",e-n)},isoWeek:function(e){var t=tt(this,1,4);return e==null?t:this.add("d",(e-t)*7)},week:function(e){var t=this.lang().week(this);return e==null?t:this.add("d",(e-t)*7)},lang:function(t){return t===e?this._lang:(this._lang=U(t),this)}};for(i=0;i<T.length;i++)rt(T[i].toLowerCase().replace(/s$/,""),T[i]);rt("year","FullYear"),t.fn.days=t.fn.day,t.fn.weeks=t.fn.week,t.fn.isoWeeks=t.fn.isoWeek,t.duration.fn=P.prototype={weeks:function(){return B(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months*2592e6},humanize:function(e){var t=+this,n=et(t,!e,this.lang());return e&&(n=this.lang().pastFuture(t,n)),this.lang().postformat(n)},lang:t.fn.lang};for(i in N)N.hasOwnProperty(i)&&(st(i,N[i]),it(i.toLowerCase()));st("Weeks",6048e5),t.lang("en",{ordinal:function(e){var t=e%10,n=~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),o&&(module.exports=t),typeof ender=="undefined"&&(this.moment=t),typeof define=="function"&&define.amd&&define("moment",[],function(){return t})}).call(this);
|
data/content/style.sass
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
$left_width:
|
1
|
+
$left_width: 500px
|
2
2
|
$header_height: 7em
|
3
3
|
$footer_height: 1.5em
|
4
4
|
|
@@ -55,30 +55,40 @@ body, html, #wrapper
|
|
55
55
|
margin: 10px 0px
|
56
56
|
|
57
57
|
li
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
span.
|
58
|
+
|
59
|
+
margin: 10px 0px
|
60
|
+
background-color: #dadada
|
61
|
+
|
62
|
+
span.repo_name, span.ref_name, span.sha1_commit,
|
63
|
+
span.git_command, span.comment,
|
64
|
+
span.git_abs_time, span.git_rel_time,
|
63
65
|
display: inline-block
|
64
66
|
font-family: monospace
|
67
|
+
|
65
68
|
span.repo_name
|
66
69
|
background-color: yellow
|
67
70
|
span.ref_name
|
68
71
|
background-color: lightblue
|
72
|
+
span.git_abs_time
|
73
|
+
background-color: yellow
|
74
|
+
span.git_rel_time
|
75
|
+
background-color: lightgreen
|
69
76
|
span.sha1_commit
|
70
77
|
background-color: pink
|
71
78
|
width: 4.94em
|
72
79
|
overflow: hidden
|
73
80
|
span.git_command
|
74
|
-
min-width:
|
81
|
+
min-width: 6em
|
75
82
|
text-align: center
|
76
|
-
background-color:
|
83
|
+
background-color: cyan
|
77
84
|
span.comment
|
78
85
|
font-size: 0.8em
|
79
86
|
|
80
87
|
// list-style: none
|
81
|
-
|
88
|
+
|
89
|
+
p:nth-child(n+2)
|
90
|
+
// except first p
|
91
|
+
padding-left: 2em
|
82
92
|
li.unknown
|
83
93
|
color: red
|
84
94
|
|
@@ -1,11 +1,16 @@
|
|
1
1
|
(function() {
|
2
2
|
var $, DAGtopo, GitoeChange, GitoeHistorian, GitoeRepo, OrderedSet, clone, exec_callback, local, strcmp, uniq, url_root, _ref,
|
3
|
+
__slice = [].slice,
|
3
4
|
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
4
5
|
|
5
6
|
$ = jQuery || (function() {
|
6
7
|
throw "demand jQuery";
|
7
8
|
})();
|
8
9
|
|
10
|
+
moment || (function() {
|
11
|
+
throw "demand moment";
|
12
|
+
})();
|
13
|
+
|
9
14
|
url_root = "/repo";
|
10
15
|
|
11
16
|
exec_callback = function(context, fun, args) {
|
@@ -304,6 +309,25 @@
|
|
304
309
|
},
|
305
310
|
br: function() {
|
306
311
|
return $('<br>');
|
312
|
+
},
|
313
|
+
pretty_abs_time: function(change) {
|
314
|
+
return this.span(moment.unix(change.committer.time).format("YYYY-MM-DD HH:mm:ss"), "git_abs_time");
|
315
|
+
},
|
316
|
+
pretty_relative_time: function(change) {
|
317
|
+
return this.span(moment.unix(change.committer.time).fromNow(), "git_rel_time");
|
318
|
+
},
|
319
|
+
p_with_time: function(change, elems) {
|
320
|
+
return this.p([this.pretty_abs_time(change), this.span(" / "), this.pretty_relative_time(change), this.span(" : ")].concat(__slice.call(elems)));
|
321
|
+
},
|
322
|
+
p: function(elements) {
|
323
|
+
var e, ret, _i, _len;
|
324
|
+
|
325
|
+
ret = $('<p>');
|
326
|
+
for (_i = 0, _len = elements.length; _i < _len; _i++) {
|
327
|
+
e = elements[_i];
|
328
|
+
ret.append(e);
|
329
|
+
}
|
330
|
+
return ret;
|
307
331
|
}
|
308
332
|
};
|
309
333
|
|
@@ -328,49 +352,49 @@
|
|
328
352
|
},
|
329
353
|
actions: {
|
330
354
|
clone: function(matched, change) {
|
331
|
-
return this.li([this.git_command("git clone"), this.span("
|
355
|
+
return this.li([this.p_with_time(change, [this.git_command("git clone")]), this.p([this.span("create "), this.ref(this.ref_fullname(change)), this.span(" at "), this.sha1_commit(change.oid_new)])]);
|
332
356
|
},
|
333
357
|
branch: function(matched, change) {
|
334
|
-
return this.li([this.git_command("git branch"), this.span("
|
358
|
+
return this.li([this.p_with_time(change, [this.git_command("git branch")]), this.p([this.span("create branch "), this.ref(this.ref_fullname(change)), this.span(" at "), this.sha1_commit(change.oid_new), /^refs/.test(matched[1]) ? this.span(" (was ") : void 0, /^refs/.test(matched[1]) ? this.ref(this.ref_realname(matched[1])) : void 0, /^refs/.test(matched[1]) ? this.span(" )") : void 0])]);
|
335
359
|
},
|
336
360
|
commit: function(matched, change) {
|
337
|
-
return this.li([this.git_command("git commit"), this.span("
|
361
|
+
return this.li([this.p_with_time(change, [this.git_command("git commit")]), this.p([this.span("move "), this.ref(this.ref_fullname(change)), this.span(" from "), this.sha1_commit(change.oid_old), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
338
362
|
},
|
339
363
|
merge_commit: function(matched, change) {
|
340
|
-
return this.li([this.git_command("git merge"), this.span("
|
364
|
+
return this.li([this.p_with_time(change, [this.git_command("git merge")]), this.p([this.span("move "), this.span(matched[2], "ref_name"), this.span(' to '), this.sha1_commit(change.oid_new), this.span(' by merging '), this.span(matched[1], "ref_name")])]);
|
341
365
|
},
|
342
366
|
commit_amend: function(matched, change) {
|
343
|
-
return this.li([this.git_command("git commit --amend"), this.span("
|
367
|
+
return this.li([this.p_with_time(change, [this.git_command("git commit --amend")]), this.p([this.span("move "), this.ref(this.ref_fullname(change)), this.span(" from "), this.sha1_commit(change.oid_old), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
344
368
|
},
|
345
369
|
merge_ff: function(matched, change) {
|
346
|
-
return this.li([this.git_command("git merge"), this.span("
|
370
|
+
return this.li([this.p_with_time(change, [this.git_command("git merge"), this.span(" (fast-forward)", "comment")]), this.p([this.span("move "), this.ref(this.ref_fullname(change)), this.span(' to '), this.sha1_commit(change.oid_new), this.span(' by merging '), this.span(matched[1], "ref_name")])]);
|
347
371
|
},
|
348
372
|
reset: function(matched, change) {
|
349
|
-
return this.li([this.git_command("git reset"), this.span("
|
373
|
+
return this.li([this.p_with_time(change, [this.git_command("git reset")]), this.p([this.span("point "), this.ref(this.ref_fullname(change)), this.span(" to "), this.sha1_commit(change.oid_new), this.span("(was "), this.sha1_commit(change.oid_old), this.span(")")])]);
|
350
374
|
},
|
351
375
|
push: function(matched, change) {
|
352
|
-
return this.li([this.git_command("git push"), this.span("
|
376
|
+
return this.li([this.p_with_time(change, [this.git_command("git push")]), this.p([this.span("update "), this.ref(this.ref_fullname(change)), change.oid_old !== "0000000000000000000000000000000000000000" ? this.span(" from ") : void 0, change.oid_old !== "0000000000000000000000000000000000000000" ? this.sha1_commit(change.oid_old) : void 0, this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
353
377
|
},
|
354
378
|
fetch: function(matched, change) {
|
355
|
-
return this.li([this.git_command("git fetch"), this.span("
|
379
|
+
return this.li([this.p_with_time(change, [this.git_command("git fetch")]), this.p([this.span("update "), this.ref(this.ref_fullname(change)), change.oid_old !== "0000000000000000000000000000000000000000" ? this.span(" from ") : void 0, change.oid_old !== "0000000000000000000000000000000000000000" ? this.sha1_commit(change.oid_old) : void 0, this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
356
380
|
},
|
357
381
|
pull: function(matched, change) {
|
358
|
-
return this.li([this.git_command("git pull"), this.span("
|
382
|
+
return this.li([this.p_with_time(change, [this.git_command("git pull")]), this.p([this.span("update "), this.ref(this.ref_fullname(change)), this.span(" from "), this.sha1_commit(change.oid_old), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
359
383
|
},
|
360
384
|
checkout: function(matched, change, rest) {
|
361
|
-
return this.li([this.git_command("git checkout"), this.span("
|
385
|
+
return this.li([this.p_with_time(change, [this.git_command("git checkout")]), this.p([this.span("checkout "), this.ref(matched[2]), this.span(" at "), this.sha1_commit(change.oid_new)])]);
|
362
386
|
},
|
363
387
|
rename_remote: function(matched, change) {
|
364
|
-
return this.li([this.git_command("git remote rename"), this.span("
|
388
|
+
return this.li([this.p_with_time(change, [this.git_command("git remote rename")]), this.p([this.span("rename "), this.ref(this.ref_realname(matched[1])), this.span(" to "), this.ref(this.ref_realname(matched[2]))])]);
|
365
389
|
},
|
366
390
|
rebase_finish: function(matched, change) {
|
367
|
-
return this.li([matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase"), this.span("
|
391
|
+
return this.li([this.p_with_time(change, [matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase")]), this.p([this.span("rebase "), this.ref(this.ref_realname(matched[2])), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
368
392
|
},
|
369
393
|
rebase_finish2: function(matched, change) {
|
370
|
-
return this.li([matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase"), this.span("
|
394
|
+
return this.li([this.p_with_time(change, [matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase")]), this.p([this.span("rebase "), this.ref(this.ref_fullname(change)), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
371
395
|
},
|
372
396
|
rebase_finish3: function(matched, change) {
|
373
|
-
return this.li([matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase"), this.span(": rebase "), this.ref(this.ref_fullname(change)), this.span(" to "), this.sha1_commit(change.oid_new)]);
|
397
|
+
return this.li([this.p_with_time(change, [matched[1] ? this.git_command("git rebase " + matched[1]) : this.git_command("git rebase")]), this.p([this.span(": rebase "), this.ref(this.ref_fullname(change)), this.span(" to "), this.sha1_commit(change.oid_new)])]);
|
374
398
|
},
|
375
399
|
rebase_abort: function(matched, change, rest) {
|
376
400
|
var matched_head, real_ref;
|
@@ -380,7 +404,7 @@
|
|
380
404
|
real_ref = matched_head[1];
|
381
405
|
}
|
382
406
|
}
|
383
|
-
return this.li([this.git_command("git rebase --abort"), this.span("
|
407
|
+
return this.li([this.p_with_time(change, [this.git_command("git rebase --abort")]), this.p([this.span("didn't rebase "), real_ref ? this.ref(real_ref) : void 0])]);
|
384
408
|
}
|
385
409
|
}
|
386
410
|
};
|
@@ -80,7 +80,7 @@
|
|
80
80
|
cb = this.cb;
|
81
81
|
this.sections = {};
|
82
82
|
this.elems = {};
|
83
|
-
repo_path = this.elems.repo_path = $("<input>")
|
83
|
+
repo_path = this.elems.repo_path = $("<input>");
|
84
84
|
this.elems.repo_open = $("<input>").attr({
|
85
85
|
type: "button"
|
86
86
|
}).val("open").on("click", function() {
|
@@ -4,8 +4,9 @@
|
|
4
4
|
<link href='reset.css' rel='stylesheet' type='text/css'>
|
5
5
|
<link href='style.css' rel='stylesheet' type='text/css'>
|
6
6
|
<script src='/jquery/jquery-1.9.1.min.js'></script>
|
7
|
-
<script src='
|
8
|
-
<script src='
|
7
|
+
<script src='jquery/jquery.scrollTo.min.js'></script>
|
8
|
+
<script src='raphael-min.js'></script>
|
9
|
+
<script src='moment.min.js'></script>
|
9
10
|
<script src='gitoe-repo.js'></script>
|
10
11
|
<script src='gitoe-draw.js'></script>
|
11
12
|
<script src='gitoe.js'></script>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
// moment.js
|
2
|
+
// version : 2.0.0
|
3
|
+
// author : Tim Wood
|
4
|
+
// license : MIT
|
5
|
+
// momentjs.com
|
6
|
+
(function(e){function O(e,t){return function(n){return j(e.call(this,n),t)}}function M(e){return function(t){return this.lang().ordinal(e.call(this,t))}}function _(){}function D(e){H(this,e)}function P(e){var t=this._data={},n=e.years||e.year||e.y||0,r=e.months||e.month||e.M||0,i=e.weeks||e.week||e.w||0,s=e.days||e.day||e.d||0,o=e.hours||e.hour||e.h||0,u=e.minutes||e.minute||e.m||0,a=e.seconds||e.second||e.s||0,f=e.milliseconds||e.millisecond||e.ms||0;this._milliseconds=f+a*1e3+u*6e4+o*36e5,this._days=s+i*7,this._months=r+n*12,t.milliseconds=f%1e3,a+=B(f/1e3),t.seconds=a%60,u+=B(a/60),t.minutes=u%60,o+=B(u/60),t.hours=o%24,s+=B(o/24),s+=i*7,t.days=s%30,r+=B(s/30),t.months=r%12,n+=B(r/12),t.years=n}function H(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function B(e){return e<0?Math.ceil(e):Math.floor(e)}function j(e,t){var n=e+"";while(n.length<t)n="0"+n;return n}function F(e,t,n){var r=t._milliseconds,i=t._days,s=t._months,o;r&&e._d.setTime(+e+r*n),i&&e.date(e.date()+i*n),s&&(o=e.date(),e.date(1).month(e.month()+s*n).date(Math.min(o,e.daysInMonth())))}function I(e){return Object.prototype.toString.call(e)==="[object Array]"}function q(e,t){var n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),i=0,s;for(s=0;s<n;s++)~~e[s]!==~~t[s]&&i++;return i+r}function R(e,t){return t.abbr=e,s[e]||(s[e]=new _),s[e].set(t),s[e]}function U(e){return e?(!s[e]&&o&&require("./lang/"+e),s[e]):t.fn._lang}function z(e){return e.match(/\[.*\]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function W(e){var t=e.match(a),n,r;for(n=0,r=t.length;n<r;n++)A[t[n]]?t[n]=A[t[n]]:t[n]=z(t[n]);return function(i){var s="";for(n=0;n<r;n++)s+=typeof t[n].call=="function"?t[n].call(i,e):t[n];return s}}function X(e,t){function r(t){return e.lang().longDateFormat(t)||t}var n=5;while(n--&&f.test(t))t=t.replace(f,r);return C[t]||(C[t]=W(t)),C[t](e)}function V(e){switch(e){case"DDDD":return p;case"YYYY":return d;case"YYYYY":return v;case"S":case"SS":case"SSS":case"DDD":return h;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return m;case"X":return b;case"Z":case"ZZ":return g;case"T":return y;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return c;default:return new RegExp(e.replace("\\",""))}}function $(e,t,n){var r,i,s=n._a;switch(e){case"M":case"MM":s[1]=t==null?0:~~t-1;break;case"MMM":case"MMMM":r=U(n._l).monthsParse(t),r!=null?s[1]=r:n._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":t!=null&&(s[2]=~~t);break;case"YY":s[0]=~~t+(~~t>68?1900:2e3);break;case"YYYY":case"YYYYY":s[0]=~~t;break;case"a":case"A":n._isPm=(t+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":s[3]=~~t;break;case"m":case"mm":s[4]=~~t;break;case"s":case"ss":s[5]=~~t;break;case"S":case"SS":case"SSS":s[6]=~~(("0."+t)*1e3);break;case"X":n._d=new Date(parseFloat(t)*1e3);break;case"Z":case"ZZ":n._useUTC=!0,r=(t+"").match(x),r&&r[1]&&(n._tzh=~~r[1]),r&&r[2]&&(n._tzm=~~r[2]),r&&r[0]==="+"&&(n._tzh=-n._tzh,n._tzm=-n._tzm)}t==null&&(n._isValid=!1)}function J(e){var t,n,r=[];if(e._d)return;for(t=0;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];r[3]+=e._tzh||0,r[4]+=e._tzm||0,n=new Date(0),e._useUTC?(n.setUTCFullYear(r[0],r[1],r[2]),n.setUTCHours(r[3],r[4],r[5],r[6])):(n.setFullYear(r[0],r[1],r[2]),n.setHours(r[3],r[4],r[5],r[6])),e._d=n}function K(e){var t=e._f.match(a),n=e._i,r,i;e._a=[];for(r=0;r<t.length;r++)i=(V(t[r]).exec(n)||[])[0],i&&(n=n.slice(n.indexOf(i)+i.length)),A[t[r]]&&$(t[r],i,e);e._isPm&&e._a[3]<12&&(e._a[3]+=12),e._isPm===!1&&e._a[3]===12&&(e._a[3]=0),J(e)}function Q(e){var t,n,r,i=99,s,o,u;while(e._f.length){t=H({},e),t._f=e._f.pop(),K(t),n=new D(t);if(n.isValid()){r=n;break}u=q(t._a,n.toArray()),u<i&&(i=u,r=n)}H(e,r)}function G(e){var t,n=e._i;if(w.exec(n)){e._f="YYYY-MM-DDT";for(t=0;t<4;t++)if(S[t][1].exec(n)){e._f+=S[t][0];break}g.exec(n)&&(e._f+=" Z"),K(e)}else e._d=new Date(n)}function Y(t){var n=t._i,r=u.exec(n);n===e?t._d=new Date:r?t._d=new Date(+r[1]):typeof n=="string"?G(t):I(n)?(t._a=n.slice(0),J(t)):t._d=n instanceof Date?new Date(+n):new Date(n)}function Z(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function et(e,t,n){var i=r(Math.abs(e)/1e3),s=r(i/60),o=r(s/60),u=r(o/24),a=r(u/365),f=i<45&&["s",i]||s===1&&["m"]||s<45&&["mm",s]||o===1&&["h"]||o<22&&["hh",o]||u===1&&["d"]||u<=25&&["dd",u]||u<=45&&["M"]||u<345&&["MM",r(u/30)]||a===1&&["y"]||["yy",a];return f[2]=t,f[3]=e>0,f[4]=n,Z.apply({},f)}function tt(e,n,r){var i=r-n,s=r-e.day();return s>i&&(s-=7),s<i-7&&(s+=7),Math.ceil(t(e).add("d",s).dayOfYear()/7)}function nt(e){var n=e._i,r=e._f;return n===null||n===""?null:(typeof n=="string"&&(e._i=n=U().preparse(n)),t.isMoment(n)?(e=H({},n),e._d=new Date(+n._d)):r?I(r)?Q(e):K(e):Y(e),new D(e))}function rt(e,n){t.fn[e]=t.fn[e+"s"]=function(e){var t=this._isUTC?"UTC":"";return e!=null?(this._d["set"+t+n](e),this):this._d["get"+t+n]()}}function it(e){t.duration.fn[e]=function(){return this._data[e]}}function st(e,n){t.duration.fn["as"+e]=function(){return+this/n}}var t,n="2.0.0",r=Math.round,i,s={},o=typeof module!="undefined"&&module.exports,u=/^\/?Date\((\-?\d+)/i,a=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,f=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,l=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,c=/\d\d?/,h=/\d{1,3}/,p=/\d{3}/,d=/\d{1,4}/,v=/[+\-]?\d{1,6}/,m=/[0-9]*[a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF]+\s*?[\u0600-\u06FF]+/i,g=/Z|[\+\-]\d\d:?\d\d/i,y=/T/i,b=/[\+\-]?\d+(\.\d{1,3})?/,w=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,E="YYYY-MM-DDTHH:mm:ssZ",S=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],x=/([\+\-]|\d\d)/gi,T="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),N={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},C={},k="DDD w W M D d".split(" "),L="M D H h m s w W".split(" "),A={M:function(){return this.month()+1},MMM:function(e){return this.lang().monthsShort(this,e)},MMMM:function(e){return this.lang().months(this,e)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(e){return this.lang().weekdaysMin(this,e)},ddd:function(e){return this.lang().weekdaysShort(this,e)},dddd:function(e){return this.lang().weekdays(this,e)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return j(this.year()%100,2)},YYYY:function(){return j(this.year(),4)},YYYYY:function(){return j(this.year(),5)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return j(~~(this.milliseconds()/10),2)},SSS:function(){return j(this.milliseconds(),3)},Z:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(e/60),2)+":"+j(~~e%60,2)},ZZ:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(10*e/6),4)},X:function(){return this.unix()}};while(k.length)i=k.pop(),A[i+"o"]=M(A[i]);while(L.length)i=L.pop(),A[i+i]=O(A[i],2);A.DDDD=O(A.DDD,3),_.prototype={set:function(e){var t,n;for(n in e)t=e[n],typeof t=="function"?this[n]=t:this["_"+n]=t},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(e){return this._months[e.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(e){return this._monthsShort[e.month()]},monthsParse:function(e){var n,r,i,s;this._monthsParse||(this._monthsParse=[]);for(n=0;n<12;n++){this._monthsParse[n]||(r=t([2e3,n]),i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(i.replace(".",""),"i"));if(this._monthsParse[n].test(e))return n}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(e){return this._weekdays[e.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(e){return this._weekdaysShort[e.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(e){return this._weekdaysMin[e.day()]},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(e){var t=this._longDateFormat[e];return!t&&this._longDateFormat[e.toUpperCase()]&&(t=this._longDateFormat[e.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e]=t),t},meridiem:function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},calendar:function(e,t){var n=this._calendar[e];return typeof n=="function"?n.apply(t):n},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(e,t,n,r){var i=this._relativeTime[n];return typeof i=="function"?i(e,t,n,r):i.replace(/%d/i,e)},pastFuture:function(e,t){var n=this._relativeTime[e>0?"future":"past"];return typeof n=="function"?n(t):n.replace(/%s/i,t)},ordinal:function(e){return this._ordinal.replace("%d",e)},_ordinal:"%d",preparse:function(e){return e},postformat:function(e){return e},week:function(e){return tt(e,this._week.dow,this._week.doy)},_week:{dow:0,doy:6}},t=function(e,t,n){return nt({_i:e,_f:t,_l:n,_isUTC:!1})},t.utc=function(e,t,n){return nt({_useUTC:!0,_isUTC:!0,_l:n,_i:e,_f:t})},t.unix=function(e){return t(e*1e3)},t.duration=function(e,n){var r=t.isDuration(e),i=typeof e=="number",s=r?e._data:i?{}:e,o;return i&&(n?s[n]=e:s.milliseconds=e),o=new P(s),r&&e.hasOwnProperty("_lang")&&(o._lang=e._lang),o},t.version=n,t.defaultFormat=E,t.lang=function(e,n){var r;if(!e)return t.fn._lang._abbr;n?R(e,n):s[e]||U(e),t.duration.fn._lang=t.fn._lang=U(e)},t.langData=function(e){return e&&e._lang&&e._lang._abbr&&(e=e._lang._abbr),U(e)},t.isMoment=function(e){return e instanceof D},t.isDuration=function(e){return e instanceof P},t.fn=D.prototype={clone:function(){return t(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._d},toJSON:function(){return t.utc(this).format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var e=this;return[e.year(),e.month(),e.date(),e.hours(),e.minutes(),e.seconds(),e.milliseconds()]},isValid:function(){return this._isValid==null&&(this._a?this._isValid=!q(this._a,(this._isUTC?t.utc(this._a):t(this._a)).toArray()):this._isValid=!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(e){var n=X(this,e||t.defaultFormat);return this.lang().postformat(n)},add:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,1),this},subtract:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,-1),this},diff:function(e,n,r){var i=this._isUTC?t(e).utc():t(e).local(),s=(this.zone()-i.zone())*6e4,o,u;return n&&(n=n.replace(/s$/,"")),n==="year"||n==="month"?(o=(this.daysInMonth()+i.daysInMonth())*432e5,u=(this.year()-i.year())*12+(this.month()-i.month()),u+=(this-t(this).startOf("month")-(i-t(i).startOf("month")))/o,n==="year"&&(u/=12)):(o=this-i-s,u=n==="second"?o/1e3:n==="minute"?o/6e4:n==="hour"?o/36e5:n==="day"?o/864e5:n==="week"?o/6048e5:o),r?u:B(u)},from:function(e,n){return t.duration(this.diff(e)).lang(this.lang()._abbr).humanize(!n)},fromNow:function(e){return this.from(t(),e)},calendar:function(){var e=this.diff(t().startOf("day"),"days",!0),n=e<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse";return this.format(this.lang().calendar(n,this))},isLeapYear:function(){var e=this.year();return e%4===0&&e%100!==0||e%400===0},isDST:function(){return this.zone()<t([this.year()]).zone()||this.zone()<t([this.year(),5]).zone()},day:function(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e==null?t:this.add({d:e-t})},startOf:function(e){e=e.replace(/s$/,"");switch(e){case"year":this.month(0);case"month":this.date(1);case"week":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return e==="week"&&this.day(0),this},endOf:function(e){return this.startOf(e).add(e.replace(/s?$/,"s"),1).subtract("ms",1)},isAfter:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)>+t(e).startOf(n)},isBefore:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)<+t(e).startOf(n)},isSame:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)===+t(e).startOf(n)},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return t.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(e){var n=r((t(this).startOf("day")-t(this).startOf("year"))/864e5)+1;return e==null?n:this.add("d",e-n)},isoWeek:function(e){var t=tt(this,1,4);return e==null?t:this.add("d",(e-t)*7)},week:function(e){var t=this.lang().week(this);return e==null?t:this.add("d",(e-t)*7)},lang:function(t){return t===e?this._lang:(this._lang=U(t),this)}};for(i=0;i<T.length;i++)rt(T[i].toLowerCase().replace(/s$/,""),T[i]);rt("year","FullYear"),t.fn.days=t.fn.day,t.fn.weeks=t.fn.week,t.fn.isoWeeks=t.fn.isoWeek,t.duration.fn=P.prototype={weeks:function(){return B(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months*2592e6},humanize:function(e){var t=+this,n=et(t,!e,this.lang());return e&&(n=this.lang().pastFuture(t,n)),this.lang().postformat(n)},lang:t.fn.lang};for(i in N)N.hasOwnProperty(i)&&(st(i,N[i]),it(i.toLowerCase()));st("Weeks",6048e5),t.lang("en",{ordinal:function(e){var t=e%10,n=~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),o&&(module.exports=t),typeof ender=="undefined"&&(this.moment=t),typeof define=="function"&&define.amd&&define("moment",[],function(){return t})}).call(this);
|
@@ -3,12 +3,12 @@ body, html, #wrapper {
|
|
3
3
|
width: 100%; }
|
4
4
|
|
5
5
|
#left {
|
6
|
-
width:
|
6
|
+
width: 500px;
|
7
7
|
background-color: #eeffff; }
|
8
8
|
|
9
9
|
#right {
|
10
10
|
position: absolute;
|
11
|
-
left:
|
11
|
+
left: 500px; }
|
12
12
|
|
13
13
|
#banner {
|
14
14
|
background-color: lightblue;
|
@@ -54,28 +54,33 @@ body, html, #wrapper {
|
|
54
54
|
padding: 15px;
|
55
55
|
margin: 10px 0px; }
|
56
56
|
#control li {
|
57
|
-
margin:
|
58
|
-
#
|
59
|
-
#control li span.ref_name,
|
60
|
-
#control li span.
|
61
|
-
#control li span.
|
62
|
-
#control li span.comment {
|
57
|
+
margin: 10px 0px;
|
58
|
+
background-color: #dadada; }
|
59
|
+
#control li span.repo_name, #control li span.ref_name, #control li span.sha1_commit,
|
60
|
+
#control li span.git_command, #control li span.comment,
|
61
|
+
#control li span.git_abs_time, #control li span.git_rel_time {
|
63
62
|
display: inline-block;
|
64
63
|
font-family: monospace; }
|
65
64
|
#control li span.repo_name {
|
66
65
|
background-color: yellow; }
|
67
66
|
#control li span.ref_name {
|
68
67
|
background-color: lightblue; }
|
68
|
+
#control li span.git_abs_time {
|
69
|
+
background-color: yellow; }
|
70
|
+
#control li span.git_rel_time {
|
71
|
+
background-color: lightgreen; }
|
69
72
|
#control li span.sha1_commit {
|
70
73
|
background-color: pink;
|
71
74
|
width: 4.94em;
|
72
75
|
overflow: hidden; }
|
73
76
|
#control li span.git_command {
|
74
|
-
min-width:
|
77
|
+
min-width: 6em;
|
75
78
|
text-align: center;
|
76
|
-
background-color:
|
79
|
+
background-color: cyan; }
|
77
80
|
#control li span.comment {
|
78
81
|
font-size: 0.8em; }
|
82
|
+
#control li p:nth-child(n+2) {
|
83
|
+
padding-left: 2em; }
|
79
84
|
#control li.unknown {
|
80
85
|
color: red; }
|
81
86
|
|
data/lib/gitoe/version.rb
CHANGED
data/todo.markdown
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
- find a way, to play with huge repo
|
2
|
+
- partial-fetching from latest commits
|
3
|
+
- IN A MORE space/time efficent way
|
4
|
+
- deferred fetch?
|
5
|
+
- -> partial-rendering of DAG ?
|
6
|
+
- from bottom-most layer
|
7
|
+
|
1
8
|
- gitoe.Historian
|
2
9
|
- more patterns
|
3
10
|
- display time of changes in natural language
|
@@ -0,0 +1,6 @@
|
|
1
|
+
// moment.js
|
2
|
+
// version : 2.0.0
|
3
|
+
// author : Tim Wood
|
4
|
+
// license : MIT
|
5
|
+
// momentjs.com
|
6
|
+
(function(e){function O(e,t){return function(n){return j(e.call(this,n),t)}}function M(e){return function(t){return this.lang().ordinal(e.call(this,t))}}function _(){}function D(e){H(this,e)}function P(e){var t=this._data={},n=e.years||e.year||e.y||0,r=e.months||e.month||e.M||0,i=e.weeks||e.week||e.w||0,s=e.days||e.day||e.d||0,o=e.hours||e.hour||e.h||0,u=e.minutes||e.minute||e.m||0,a=e.seconds||e.second||e.s||0,f=e.milliseconds||e.millisecond||e.ms||0;this._milliseconds=f+a*1e3+u*6e4+o*36e5,this._days=s+i*7,this._months=r+n*12,t.milliseconds=f%1e3,a+=B(f/1e3),t.seconds=a%60,u+=B(a/60),t.minutes=u%60,o+=B(u/60),t.hours=o%24,s+=B(o/24),s+=i*7,t.days=s%30,r+=B(s/30),t.months=r%12,n+=B(r/12),t.years=n}function H(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function B(e){return e<0?Math.ceil(e):Math.floor(e)}function j(e,t){var n=e+"";while(n.length<t)n="0"+n;return n}function F(e,t,n){var r=t._milliseconds,i=t._days,s=t._months,o;r&&e._d.setTime(+e+r*n),i&&e.date(e.date()+i*n),s&&(o=e.date(),e.date(1).month(e.month()+s*n).date(Math.min(o,e.daysInMonth())))}function I(e){return Object.prototype.toString.call(e)==="[object Array]"}function q(e,t){var n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),i=0,s;for(s=0;s<n;s++)~~e[s]!==~~t[s]&&i++;return i+r}function R(e,t){return t.abbr=e,s[e]||(s[e]=new _),s[e].set(t),s[e]}function U(e){return e?(!s[e]&&o&&require("./lang/"+e),s[e]):t.fn._lang}function z(e){return e.match(/\[.*\]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function W(e){var t=e.match(a),n,r;for(n=0,r=t.length;n<r;n++)A[t[n]]?t[n]=A[t[n]]:t[n]=z(t[n]);return function(i){var s="";for(n=0;n<r;n++)s+=typeof t[n].call=="function"?t[n].call(i,e):t[n];return s}}function X(e,t){function r(t){return e.lang().longDateFormat(t)||t}var n=5;while(n--&&f.test(t))t=t.replace(f,r);return C[t]||(C[t]=W(t)),C[t](e)}function V(e){switch(e){case"DDDD":return p;case"YYYY":return d;case"YYYYY":return v;case"S":case"SS":case"SSS":case"DDD":return h;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return m;case"X":return b;case"Z":case"ZZ":return g;case"T":return y;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return c;default:return new RegExp(e.replace("\\",""))}}function $(e,t,n){var r,i,s=n._a;switch(e){case"M":case"MM":s[1]=t==null?0:~~t-1;break;case"MMM":case"MMMM":r=U(n._l).monthsParse(t),r!=null?s[1]=r:n._isValid=!1;break;case"D":case"DD":case"DDD":case"DDDD":t!=null&&(s[2]=~~t);break;case"YY":s[0]=~~t+(~~t>68?1900:2e3);break;case"YYYY":case"YYYYY":s[0]=~~t;break;case"a":case"A":n._isPm=(t+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":s[3]=~~t;break;case"m":case"mm":s[4]=~~t;break;case"s":case"ss":s[5]=~~t;break;case"S":case"SS":case"SSS":s[6]=~~(("0."+t)*1e3);break;case"X":n._d=new Date(parseFloat(t)*1e3);break;case"Z":case"ZZ":n._useUTC=!0,r=(t+"").match(x),r&&r[1]&&(n._tzh=~~r[1]),r&&r[2]&&(n._tzm=~~r[2]),r&&r[0]==="+"&&(n._tzh=-n._tzh,n._tzm=-n._tzm)}t==null&&(n._isValid=!1)}function J(e){var t,n,r=[];if(e._d)return;for(t=0;t<7;t++)e._a[t]=r[t]=e._a[t]==null?t===2?1:0:e._a[t];r[3]+=e._tzh||0,r[4]+=e._tzm||0,n=new Date(0),e._useUTC?(n.setUTCFullYear(r[0],r[1],r[2]),n.setUTCHours(r[3],r[4],r[5],r[6])):(n.setFullYear(r[0],r[1],r[2]),n.setHours(r[3],r[4],r[5],r[6])),e._d=n}function K(e){var t=e._f.match(a),n=e._i,r,i;e._a=[];for(r=0;r<t.length;r++)i=(V(t[r]).exec(n)||[])[0],i&&(n=n.slice(n.indexOf(i)+i.length)),A[t[r]]&&$(t[r],i,e);e._isPm&&e._a[3]<12&&(e._a[3]+=12),e._isPm===!1&&e._a[3]===12&&(e._a[3]=0),J(e)}function Q(e){var t,n,r,i=99,s,o,u;while(e._f.length){t=H({},e),t._f=e._f.pop(),K(t),n=new D(t);if(n.isValid()){r=n;break}u=q(t._a,n.toArray()),u<i&&(i=u,r=n)}H(e,r)}function G(e){var t,n=e._i;if(w.exec(n)){e._f="YYYY-MM-DDT";for(t=0;t<4;t++)if(S[t][1].exec(n)){e._f+=S[t][0];break}g.exec(n)&&(e._f+=" Z"),K(e)}else e._d=new Date(n)}function Y(t){var n=t._i,r=u.exec(n);n===e?t._d=new Date:r?t._d=new Date(+r[1]):typeof n=="string"?G(t):I(n)?(t._a=n.slice(0),J(t)):t._d=n instanceof Date?new Date(+n):new Date(n)}function Z(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function et(e,t,n){var i=r(Math.abs(e)/1e3),s=r(i/60),o=r(s/60),u=r(o/24),a=r(u/365),f=i<45&&["s",i]||s===1&&["m"]||s<45&&["mm",s]||o===1&&["h"]||o<22&&["hh",o]||u===1&&["d"]||u<=25&&["dd",u]||u<=45&&["M"]||u<345&&["MM",r(u/30)]||a===1&&["y"]||["yy",a];return f[2]=t,f[3]=e>0,f[4]=n,Z.apply({},f)}function tt(e,n,r){var i=r-n,s=r-e.day();return s>i&&(s-=7),s<i-7&&(s+=7),Math.ceil(t(e).add("d",s).dayOfYear()/7)}function nt(e){var n=e._i,r=e._f;return n===null||n===""?null:(typeof n=="string"&&(e._i=n=U().preparse(n)),t.isMoment(n)?(e=H({},n),e._d=new Date(+n._d)):r?I(r)?Q(e):K(e):Y(e),new D(e))}function rt(e,n){t.fn[e]=t.fn[e+"s"]=function(e){var t=this._isUTC?"UTC":"";return e!=null?(this._d["set"+t+n](e),this):this._d["get"+t+n]()}}function it(e){t.duration.fn[e]=function(){return this._data[e]}}function st(e,n){t.duration.fn["as"+e]=function(){return+this/n}}var t,n="2.0.0",r=Math.round,i,s={},o=typeof module!="undefined"&&module.exports,u=/^\/?Date\((\-?\d+)/i,a=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|X|zz?|ZZ?|.)/g,f=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,l=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,c=/\d\d?/,h=/\d{1,3}/,p=/\d{3}/,d=/\d{1,4}/,v=/[+\-]?\d{1,6}/,m=/[0-9]*[a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF]+\s*?[\u0600-\u06FF]+/i,g=/Z|[\+\-]\d\d:?\d\d/i,y=/T/i,b=/[\+\-]?\d+(\.\d{1,3})?/,w=/^\s*\d{4}-\d\d-\d\d((T| )(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,E="YYYY-MM-DDTHH:mm:ssZ",S=[["HH:mm:ss.S",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],x=/([\+\-]|\d\d)/gi,T="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),N={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},C={},k="DDD w W M D d".split(" "),L="M D H h m s w W".split(" "),A={M:function(){return this.month()+1},MMM:function(e){return this.lang().monthsShort(this,e)},MMMM:function(e){return this.lang().months(this,e)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(e){return this.lang().weekdaysMin(this,e)},ddd:function(e){return this.lang().weekdaysShort(this,e)},dddd:function(e){return this.lang().weekdays(this,e)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return j(this.year()%100,2)},YYYY:function(){return j(this.year(),4)},YYYYY:function(){return j(this.year(),5)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return j(~~(this.milliseconds()/10),2)},SSS:function(){return j(this.milliseconds(),3)},Z:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(e/60),2)+":"+j(~~e%60,2)},ZZ:function(){var e=-this.zone(),t="+";return e<0&&(e=-e,t="-"),t+j(~~(10*e/6),4)},X:function(){return this.unix()}};while(k.length)i=k.pop(),A[i+"o"]=M(A[i]);while(L.length)i=L.pop(),A[i+i]=O(A[i],2);A.DDDD=O(A.DDD,3),_.prototype={set:function(e){var t,n;for(n in e)t=e[n],typeof t=="function"?this[n]=t:this["_"+n]=t},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(e){return this._months[e.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(e){return this._monthsShort[e.month()]},monthsParse:function(e){var n,r,i,s;this._monthsParse||(this._monthsParse=[]);for(n=0;n<12;n++){this._monthsParse[n]||(r=t([2e3,n]),i="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(i.replace(".",""),"i"));if(this._monthsParse[n].test(e))return n}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(e){return this._weekdays[e.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(e){return this._weekdaysShort[e.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(e){return this._weekdaysMin[e.day()]},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(e){var t=this._longDateFormat[e];return!t&&this._longDateFormat[e.toUpperCase()]&&(t=this._longDateFormat[e.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e]=t),t},meridiem:function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},calendar:function(e,t){var n=this._calendar[e];return typeof n=="function"?n.apply(t):n},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(e,t,n,r){var i=this._relativeTime[n];return typeof i=="function"?i(e,t,n,r):i.replace(/%d/i,e)},pastFuture:function(e,t){var n=this._relativeTime[e>0?"future":"past"];return typeof n=="function"?n(t):n.replace(/%s/i,t)},ordinal:function(e){return this._ordinal.replace("%d",e)},_ordinal:"%d",preparse:function(e){return e},postformat:function(e){return e},week:function(e){return tt(e,this._week.dow,this._week.doy)},_week:{dow:0,doy:6}},t=function(e,t,n){return nt({_i:e,_f:t,_l:n,_isUTC:!1})},t.utc=function(e,t,n){return nt({_useUTC:!0,_isUTC:!0,_l:n,_i:e,_f:t})},t.unix=function(e){return t(e*1e3)},t.duration=function(e,n){var r=t.isDuration(e),i=typeof e=="number",s=r?e._data:i?{}:e,o;return i&&(n?s[n]=e:s.milliseconds=e),o=new P(s),r&&e.hasOwnProperty("_lang")&&(o._lang=e._lang),o},t.version=n,t.defaultFormat=E,t.lang=function(e,n){var r;if(!e)return t.fn._lang._abbr;n?R(e,n):s[e]||U(e),t.duration.fn._lang=t.fn._lang=U(e)},t.langData=function(e){return e&&e._lang&&e._lang._abbr&&(e=e._lang._abbr),U(e)},t.isMoment=function(e){return e instanceof D},t.isDuration=function(e){return e instanceof P},t.fn=D.prototype={clone:function(){return t(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._d},toJSON:function(){return t.utc(this).format("YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var e=this;return[e.year(),e.month(),e.date(),e.hours(),e.minutes(),e.seconds(),e.milliseconds()]},isValid:function(){return this._isValid==null&&(this._a?this._isValid=!q(this._a,(this._isUTC?t.utc(this._a):t(this._a)).toArray()):this._isValid=!isNaN(this._d.getTime())),!!this._isValid},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(e){var n=X(this,e||t.defaultFormat);return this.lang().postformat(n)},add:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,1),this},subtract:function(e,n){var r;return typeof e=="string"?r=t.duration(+n,e):r=t.duration(e,n),F(this,r,-1),this},diff:function(e,n,r){var i=this._isUTC?t(e).utc():t(e).local(),s=(this.zone()-i.zone())*6e4,o,u;return n&&(n=n.replace(/s$/,"")),n==="year"||n==="month"?(o=(this.daysInMonth()+i.daysInMonth())*432e5,u=(this.year()-i.year())*12+(this.month()-i.month()),u+=(this-t(this).startOf("month")-(i-t(i).startOf("month")))/o,n==="year"&&(u/=12)):(o=this-i-s,u=n==="second"?o/1e3:n==="minute"?o/6e4:n==="hour"?o/36e5:n==="day"?o/864e5:n==="week"?o/6048e5:o),r?u:B(u)},from:function(e,n){return t.duration(this.diff(e)).lang(this.lang()._abbr).humanize(!n)},fromNow:function(e){return this.from(t(),e)},calendar:function(){var e=this.diff(t().startOf("day"),"days",!0),n=e<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse";return this.format(this.lang().calendar(n,this))},isLeapYear:function(){var e=this.year();return e%4===0&&e%100!==0||e%400===0},isDST:function(){return this.zone()<t([this.year()]).zone()||this.zone()<t([this.year(),5]).zone()},day:function(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e==null?t:this.add({d:e-t})},startOf:function(e){e=e.replace(/s$/,"");switch(e){case"year":this.month(0);case"month":this.date(1);case"week":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return e==="week"&&this.day(0),this},endOf:function(e){return this.startOf(e).add(e.replace(/s?$/,"s"),1).subtract("ms",1)},isAfter:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)>+t(e).startOf(n)},isBefore:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)<+t(e).startOf(n)},isSame:function(e,n){return n=typeof n!="undefined"?n:"millisecond",+this.clone().startOf(n)===+t(e).startOf(n)},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return t.utc([this.year(),this.month()+1,0]).date()},dayOfYear:function(e){var n=r((t(this).startOf("day")-t(this).startOf("year"))/864e5)+1;return e==null?n:this.add("d",e-n)},isoWeek:function(e){var t=tt(this,1,4);return e==null?t:this.add("d",(e-t)*7)},week:function(e){var t=this.lang().week(this);return e==null?t:this.add("d",(e-t)*7)},lang:function(t){return t===e?this._lang:(this._lang=U(t),this)}};for(i=0;i<T.length;i++)rt(T[i].toLowerCase().replace(/s$/,""),T[i]);rt("year","FullYear"),t.fn.days=t.fn.day,t.fn.weeks=t.fn.week,t.fn.isoWeeks=t.fn.isoWeek,t.duration.fn=P.prototype={weeks:function(){return B(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months*2592e6},humanize:function(e){var t=+this,n=et(t,!e,this.lang());return e&&(n=this.lang().pastFuture(t,n)),this.lang().postformat(n)},lang:t.fn.lang};for(i in N)N.hasOwnProperty(i)&&(st(i,N[i]),it(i.toLowerCase()));st("Weeks",6048e5),t.lang("en",{ordinal:function(e){var t=e%10,n=~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),o&&(module.exports=t),typeof ender=="undefined"&&(this.moment=t),typeof define=="function"&&define.amd&&define("moment",[],function(){return t})}).call(this);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitoe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wang Guan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rugged
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- content/index.haml
|
189
189
|
- content/jquery/jquery-1.9.1.min.js
|
190
190
|
- content/jquery/jquery.scrollTo.min.js
|
191
|
+
- content/moment.min.js
|
191
192
|
- content/raphael-min.js
|
192
193
|
- content/reset.sass
|
193
194
|
- content/style.sass
|
@@ -199,6 +200,7 @@ files:
|
|
199
200
|
- lib/gitoe/httpserver/public/index.html
|
200
201
|
- lib/gitoe/httpserver/public/jquery/jquery-1.9.1.min.js
|
201
202
|
- lib/gitoe/httpserver/public/jquery/jquery.scrollTo.min.js
|
203
|
+
- lib/gitoe/httpserver/public/moment.min.js
|
202
204
|
- lib/gitoe/httpserver/public/raphael-min.js
|
203
205
|
- lib/gitoe/httpserver/public/reset.css
|
204
206
|
- lib/gitoe/httpserver/public/style.css
|
@@ -211,6 +213,7 @@ files:
|
|
211
213
|
- test/test.rb
|
212
214
|
- todo.markdown
|
213
215
|
- vendor/jquery-1.9.1.min.js
|
216
|
+
- vendor/moment.min.js
|
214
217
|
- vendor/raphael-min.js
|
215
218
|
homepage: https://github.com/jokester/gitoe
|
216
219
|
licenses: []
|
@@ -231,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
234
|
version: '0'
|
232
235
|
requirements: []
|
233
236
|
rubyforge_project:
|
234
|
-
rubygems_version: 2.0.
|
237
|
+
rubygems_version: 2.0.2
|
235
238
|
signing_key:
|
236
239
|
specification_version: 4
|
237
240
|
summary: visualize local git activities
|