capillary 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capillary (0.1.3)
4
+ capillary (0.2.1)
5
5
  json (~> 1.5.1)
6
6
 
7
7
  GEM
data/README CHANGED
@@ -7,37 +7,146 @@ gitk and `git log --graph`, except beautiful.
7
7
 
8
8
  Capillary consists of two parts:
9
9
 
10
- * capillary.rb: which parses the output from Git log data and
11
- generates a JSON representation of it, usable from
10
+ * capillary.rb: which parses the output from Git log data and generates a
11
+ JSON representation of it, usable from:
12
12
  * capillary.js: the javascript library doing the presentation
13
13
 
14
14
  The emitted JSON
15
15
  ----------------
16
16
 
17
17
  Capillary.rb emits a JSON array consisting of JSON objects in the
18
- following form (starting with id=0):
18
+ following form (starting with seqId=0):
19
19
 
20
20
  [[{
21
- sha: "251367a",
22
- refnames: ["HEAD", "origin/master", "origin/HEAD", "master"],
23
- message: "Whitespace fix",
24
- id: 1
25
- }, {
26
- sha: "854e061",
27
- refnames: ["origin/unified-messaging-api", "unified-messaging-api"],
28
- message: "Resolve merge conflict from master",
29
- id: 2
30
- }]];
21
+ "refNames": ["HEAD", "origin/production", "production"],
22
+ "seqId": 0,
23
+ "committedAt": "Fri Jul 15 07:23:44 +0200 2011",
24
+ "parentIds": ["8f38426b1641a20511f6eeb6878f2e1e00712df2", "ce7de03fc2cb6114d2f859fefc996e7fffa2d7f6"],
25
+ "id": "a490db7b450e6c58bb69ac64dfe725b188bfe5b3",
26
+ "committerEmail": "christian@gitorious.org",
27
+ "message": "Merge branch 'master' into production"
28
+ }, {
29
+ "refNames": [],
30
+ "seqId": 1,
31
+ "committedAt": "Thu Jun 16 10:20:03 +0200 2011",
32
+ "parentIds": ["0443fcdf66df410993441b617d14dab121245ff7"],
33
+ "id": "909d42da14d186e4580995f24b56aa4223f7965f",
34
+ "committerEmail": "christian@gitorious.org",
35
+ "message":"Don't allow destructive actions via GET etc"
36
+ }]]
37
+
38
+ * seqId: The relative sequence id of the commit. This is used to order commits,
39
+ and seqId == 0 is given to the newest commit, because Capillary looks at the
40
+ commit graph top-down (newest-oldest).
41
+ * committedAt: The commit date.
42
+ * committerEmail: The committer email.
43
+ * id: The commit sha
44
+ * parentIds: The commit sha of all parent commits of this commit
45
+ * message: The commit message
46
+ * Ref names: Relevant names of branches that concern the commit
47
+ in question
48
+
49
+ Note that the JSON emitted is a nested array - an array of "paths", where each
50
+ path is an array of commits.
51
+
52
+ What is a path? If you look at a log graph from the "top" (newest commit),
53
+ each merge point is considered the start of a new path through the graph. The
54
+ commit where the branch was originally created marks the end of the path.
55
+
56
+ Consider the following graph (the numbers to the left indicate each commit's
57
+ assigned seqId):
58
+
59
+ 0 0
60
+ |\
61
+ 1 0 |
62
+ | |
63
+ 2 | 0
64
+ | |
65
+ 3 | 0
66
+ | |\
67
+ 4 | 0 |
68
+ | | |
69
+ 5 | 0 |
70
+ | | |
71
+ 6 | | 0
72
+ | |/
73
+ 7 | 0
74
+ |/
75
+ 8 0
76
+ |
77
+
78
+ Capillary parses this log into three paths:
79
+
80
+ Path #1: [{ seqId: 0 }, { seqId: 1 }, { seqId: 8 }]
81
+ 0 0
82
+ |
83
+ 1 0
84
+ |
85
+ 2 |
86
+ |
87
+ 3 |
88
+ |
89
+ 4 |
90
+ |
91
+ 5 |
92
+ |
93
+ 6 |
94
+ |
95
+ 7 |
96
+ |
97
+ 8 0
98
+ |
99
+
100
+ Path #2: [{ seqId: 0 }, { seqId: 2 }, { seqId: 3 }, { seqId: 4 },
101
+ { seqId: 5 }, { seqId: 7 }, { seqId: 8 }]
102
+ 0 0
103
+ \
104
+ 1 |
105
+ |
106
+ 2 0
107
+ |
108
+ 3 0
109
+ |
110
+ 4 0
111
+ |
112
+ 5 0
113
+ |
114
+ 6 |
115
+ |
116
+ 7 0
117
+ /
118
+ 8 0
119
+ |
120
+
121
+ Path #3: [{ seqId: 3 }, { seqId: 6 }, { seqId: 7 }]
122
+ 3 0
123
+ \
124
+ 4 |
125
+ |
126
+ 5 |
127
+ |
128
+ 6 0
129
+ /
130
+ 7 0
131
+
132
+ This output can be further processed by capillary.js.
31
133
 
32
134
  Input to capillary.rb
33
135
  ---------------------
34
136
 
35
- Capillary parses output from Git, in the format as specified in
137
+ Capillary parses output from Git log, in the format as specified in
36
138
  test/fixtures/single_commit.txt. This output was generated from Git using the
37
139
  following command:
38
140
 
39
141
  git log --pretty=format:"%H§%P§%ad§%ae§%d§%s§"
40
142
 
143
+ You may also use the following command, which orders commits slightly
144
+ differently, and is perhaps more suitable for graph generation. Note that this
145
+ command outputs an extra line per commit, which may be an issue if I/O is a
146
+ concern:
147
+
148
+ git rev-list --pretty=format:"%H§%P§%ad§%ae§%d§%s§" --topo-order -50 master
149
+
41
150
  The name
42
151
  --------
43
152
 
@@ -25,6 +25,9 @@ module Capillary
25
25
 
26
26
  # Creates an instance from Git output
27
27
  def self.parse(git_line)
28
+ git_line = git_line.gsub(/^[^a-f0-9]+/, "")
29
+ return nil if git_line == ""
30
+
28
31
  parts = git_line.split(LOG_SEPARATOR)
29
32
  result = new
30
33
  result.id = parts[0]
@@ -27,10 +27,13 @@ module Capillary
27
27
  @branches = []
28
28
  @seq_ids = {}
29
29
  @commit_positions = {}
30
+ @relationships = {}
30
31
  end
31
32
 
32
33
  def <<(commit)
33
34
  commit = Capillary::Commit.parse(commit) if String === commit
35
+ return if commit.nil?
36
+
34
37
  seq_id = @commit_count
35
38
  @commit_count += 1
36
39
 
@@ -55,16 +58,7 @@ module Capillary
55
58
 
56
59
  placed = branches.inject(false) do |was_placed, branch|
57
60
  if !branch.last.closed? && branch.last.parent_id == commit.id
58
- pos = @commit_positions[branch.last.parent_id]
59
-
60
- if pos
61
- diff = (pos.first - col).abs
62
- next true if diff > 1
63
- else
64
- @commit_positions[commit.id] = [col, branch.length]
65
- end
66
-
67
- branch << commit
61
+ save_commit_pos(col, commit)
68
62
  was_placed = true
69
63
  end
70
64
 
@@ -73,9 +67,29 @@ module Capillary
73
67
  end
74
68
 
75
69
  unless placed
76
- @commit_positions[commit.id] = [col, 0]
77
- branches << [commit]
70
+ save_commit_pos(col, commit)
71
+ end
72
+ end
73
+
74
+ def save_commit_pos(col, commit)
75
+ branch = branches[col]
76
+ prev_commit = branch && branch.last
77
+ pos = prev_commit && @commit_positions[prev_commit.parent_id]
78
+
79
+ if !pos
80
+ branches << [] if branches.length <= col
81
+ @commit_positions[commit.id] = [col, branches[col].length]
78
82
  end
83
+
84
+ if branches[col].length > 0
85
+ pid = branches[col].last.commit.id
86
+ relationship = "#{commit.id}:#{pid}"
87
+ return if @relationships[relationship]
88
+ @relationships[relationship] = true
89
+ end
90
+
91
+ parent = commit.parent_id ? " (#{commit.parent_id[0...7]})" : ""
92
+ branches[col] << commit
79
93
  end
80
94
  end
81
95
 
@@ -17,5 +17,5 @@
17
17
  #++
18
18
 
19
19
  module Capillary
20
- VERSION = "0.2.0"
20
+ VERSION = "0.2.2"
21
21
  end
@@ -20,6 +20,27 @@ require "test_helper"
20
20
  require "capillary/log_parser"
21
21
 
22
22
  class LogParserTest < MiniTest::Spec
23
+ attr_reader :log_parser, :lines
24
+
25
+ def commits_for_branch(num)
26
+ branches[num].collect { |c| c.id[0...7] }
27
+ end
28
+
29
+ def load_fixture(fixture)
30
+ fixtures = fixture(fixture).split("\n")
31
+ @log_parser = Capillary::LogParser.new
32
+ @lines = []
33
+
34
+ fixtures.reject { |f| f.strip == "" }.each do |fixture|
35
+ @lines << Capillary::Commit.parse(fixture)
36
+ @log_parser << @lines.last
37
+ end
38
+ end
39
+
40
+ def branches
41
+ log_parser.branches
42
+ end
43
+
23
44
  # * a7cf78bfff06d52b5b0aa021508b44c00cad067a
24
45
  # * db75ad82d678d51b29709d26af64d4a85b6f8071
25
46
  context "A linear graph" do
@@ -265,6 +286,316 @@ class LogParserTest < MiniTest::Spec
265
286
  end
266
287
  end
267
288
 
289
+ # 0
290
+ # |
291
+ # 0
292
+ # |
293
+ # 0
294
+ # |\
295
+ # | 0
296
+ # | |
297
+ # | 0
298
+ # | |
299
+ # | 0
300
+ # | |
301
+ # | 0
302
+ # | |
303
+ # | 0
304
+ # | |
305
+ # | 0
306
+ # | |
307
+ # | 0
308
+ # | |
309
+ context "Parsing log --graph output" do
310
+ setup do
311
+ fixtures = fixture("log_graph.txt").split("\n")
312
+ @log_parser = Capillary::LogParser.new
313
+ @lines = []
314
+
315
+ fixtures.reject { |f| f.strip == "" }.each do |fixture|
316
+ @lines << Capillary::Commit.parse(fixture)
317
+ @log_parser << @lines.last
318
+ end
319
+ end
320
+
321
+ should "have two branches" do
322
+ assert_equal 2, @log_parser.branches.length
323
+ end
324
+ end
325
+
326
+ # 0
327
+ # |
328
+ # 0
329
+ # |
330
+ # 0
331
+ # |\
332
+ # | 0
333
+ # | |
334
+ # | 0
335
+ # | |
336
+ # | 0
337
+ # | |
338
+ # | 0
339
+ # | |
340
+ # | 0
341
+ # | |
342
+ # | 0
343
+ # | |
344
+ # | 0
345
+ # | |
346
+ # | 0
347
+ # | |
348
+ # 0--
349
+ # | |\
350
+ # | | 0
351
+ # | | |
352
+ # | | 0
353
+ # | | |
354
+ # | | 0
355
+ # | | |
356
+ # | | 0
357
+ # | | |
358
+ # | | 0
359
+ # | | |
360
+ # | | 0
361
+ # |/ /
362
+ # 0--
363
+ # |
364
+ # 0
365
+ # |
366
+ context "Two branches forked from same commit" do
367
+ setup do
368
+ fixtures = fixture("double_fork.txt").split("\n")
369
+ @log_parser = Capillary::LogParser.new
370
+ @lines = []
371
+
372
+ fixtures.reject { |f| f.strip == "" }.each do |fixture|
373
+ @lines << Capillary::Commit.parse(fixture)
374
+ @log_parser << @lines.last
375
+ end
376
+ end
377
+
378
+ should "have three branches" do
379
+ assert_equal 3, @log_parser.branches.length
380
+ end
381
+
382
+ should "have the six commits in the first branch" do
383
+ commits = @log_parser.branches[0].collect { |c| c.id[0...7] }
384
+
385
+ assert_equal 6, commits.length
386
+ assert_equal %w[0f54800 5bdf304 2477a17 ea4d6ce fdc39f6 9002b5b], commits
387
+ end
388
+
389
+ should "have the ten commits in the second branch" do
390
+ commits = @log_parser.branches[1].collect { |c| c.id[0...7] }
391
+
392
+ assert_equal 10, commits.length
393
+ assert_equal %w[2477a17 13c727b bd73540 6fb3997 9266f54 a5f9deb 1551dfe 16d2ac1 1e69972 fdc39f6], commits
394
+ end
395
+
396
+ should "have the eight commits in the third branch" do
397
+ commits = @log_parser.branches[2].collect { |c| c.id[0...7] }
398
+
399
+ assert_equal 8, commits.length
400
+ assert_equal %w[ea4d6ce 74510fd 09b2486 4f0eaf7 fe57cfc cbdfa12 81febec fdc39f6], commits
401
+ end
402
+ end
403
+
404
+ # 0
405
+ # |\
406
+ # | 0
407
+ # | |
408
+ context "Two dangling branches" do
409
+ setup do
410
+ log = <<-GIT
411
+ ca2d07e0172565c9e0f18d41e49b70d7d75fced6§3370cb3615b3368be97c0f39b86f5dc2f9fa3650 c4e7446e2a98f1bf28da51fc57bb42b532222942§Tue May 10 12:47:08 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/2230'§
412
+ c4e7446e2a98f1bf28da51fc57bb42b532222942§c3e1d675667939e64ced1bb5b541c9042a1d60f8§Tue May 10 12:41:19 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/2230' of gitorious.org:gitorious/mainline into merge-requests/2230§
413
+ GIT
414
+
415
+ @log_parser = Capillary::LogParser.new
416
+ log.split("\n").each { |l| @log_parser << l }
417
+ end
418
+
419
+ should "have two branches" do
420
+ assert_equal 2, branches.length
421
+ end
422
+
423
+ should "have one commit in first branch" do
424
+ assert_equal %w[ca2d07e], commits_for_branch(0)
425
+ end
426
+
427
+ should "have two commits in second branch" do
428
+ assert_equal %w[ca2d07e c4e7446], commits_for_branch(1)
429
+ end
430
+ end
431
+
432
+ # 0
433
+ # |
434
+ # 0
435
+ # |\
436
+ # | 0
437
+ # | |
438
+ context "Two dangling branches with leading commit" do
439
+ setup do
440
+ log = <<-GIT
441
+ 1f2b8a4e3f61ffedf9908e28b280de8c6bf38a16§ca2d07e0172565c9e0f18d41e49b70d7d75fced6§Tue May 10 13:04:10 2011 +0200§christian@gitorious.org§§Some commit§
442
+ ca2d07e0172565c9e0f18d41e49b70d7d75fced6§3370cb3615b3368be97c0f39b86f5dc2f9fa3650 c4e7446e2a98f1bf28da51fc57bb42b532222942§Tue May 10 12:47:08 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/2230'§
443
+ c4e7446e2a98f1bf28da51fc57bb42b532222942§c3e1d675667939e64ced1bb5b541c9042a1d60f8§Tue May 10 12:41:19 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/2230' of gitorious.org:gitorious/mainline into merge-requests/2230§
444
+ GIT
445
+
446
+ @log_parser = Capillary::LogParser.new
447
+ log.split("\n").each { |l| @log_parser << l }
448
+ end
449
+
450
+ should "have two branches" do
451
+ assert_equal 2, branches.length
452
+ end
453
+
454
+ should "have two commits in first branch" do
455
+ assert_equal %w[1f2b8a4 ca2d07e], commits_for_branch(0)
456
+ end
457
+
458
+ should "have two commits in second branch" do
459
+ assert_equal %w[ca2d07e c4e7446], commits_for_branch(1)
460
+ end
461
+ end
462
+
463
+ # 0
464
+ # |\
465
+ # 0-|
466
+ # | |\
467
+ # | | 0
468
+ # | | |
469
+ context "Three dangling branches" do
470
+ setup do
471
+ log = <<-GIT
472
+ 1f2b8a4e3f61ffedf9908e28b280de8c6bf38a16§ca2d07e0172565c9e0f18d41e49b70d7d75fced6 275932ab0995a11fcebeb0af7f19a7b8df5dea3f§Tue May 10 13:04:10 2011 +0200§christian@gitorious.org§§Some commit§
473
+ ca2d07e0172565c9e0f18d41e49b70d7d75fced6§3370cb3615b3368be97c0f39b86f5dc2f9fa3650 c4e7446e2a98f1bf28da51fc57bb42b532222942§Tue May 10 12:47:08 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/2230'§
474
+ c4e7446e2a98f1bf28da51fc57bb42b532222942§c3e1d675667939e64ced1bb5b541c9042a1d60f8§Tue May 10 12:41:19 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/2230' of gitorious.org:gitorious/mainline into merge-requests/2230§
475
+ GIT
476
+
477
+ @log_parser = Capillary::LogParser.new
478
+ log.split("\n").each { |l| @log_parser << l }
479
+ end
480
+
481
+ should "have three branches" do
482
+ assert_equal 3, branches.length
483
+ end
484
+
485
+ should "have two commits in first branch" do
486
+ assert_equal %w[1f2b8a4 ca2d07e], commits_for_branch(0)
487
+ end
488
+
489
+ should "have one commit in second branch" do
490
+ assert_equal %w[1f2b8a4], commits_for_branch(1)
491
+ end
492
+
493
+ should "have two commits in third branch" do
494
+ assert_equal %w[ca2d07e c4e7446], commits_for_branch(2)
495
+ end
496
+ end
497
+
498
+ # 0--
499
+ # | \
500
+ # 0 |
501
+ # |\ |
502
+ # | 0 |
503
+ # | | 0
504
+ # |/ |
505
+ # 0 |
506
+ # |\ |
507
+ # | 0 |
508
+ # | | |
509
+ context "Three dangling branches with closed branch" do
510
+ setup do
511
+ log = <<-GIT
512
+ 0000000000000000000000000000000000000000§1111111111111111111111111111111111111111 3333333333333333333333333333333333333333§Tue May 10 13:00:00 2011 +0200§christian@gitorious.org§§Message§
513
+ 1111111111111111111111111111111111111111§4444444444444444444444444444444444444444 2222222222222222222222222222222222222222§Tue May 10 12:00:00 2011 +0200§christian@gitorious.org§§Message§
514
+ 2222222222222222222222222222222222222222§4444444444444444444444444444444444444444§Tue May 10 11:00:00 2011 +0200§christian@gitorious.org§§Message§
515
+ 3333333333333333333333333333333333333333§6666666666666666666666666666666666666666§Tue May 10 10:00:00 2011 +0200§christian@gitorious.org§§Message§
516
+ 4444444444444444444444444444444444444444§7777777777777777777777777777777777777777 5555555555555555555555555555555555555555§Tue May 10 09:00:00 2011 +0200§christian@gitorious.org§§Message§
517
+ 5555555555555555555555555555555555555555§8888888888888888888888888888888888888888§Tue May 10 08:00:00 2011 +0200§christian@gitorious.org§§Message§
518
+ GIT
519
+
520
+ @log_parser = Capillary::LogParser.new
521
+ log.split("\n").each { |l| @log_parser << l }
522
+ end
523
+
524
+ should "have four branches" do
525
+ assert_equal 4, branches.length
526
+ end
527
+
528
+ should "have three commits in first branch" do
529
+ assert_equal %w[0000000 1111111 4444444], commits_for_branch(0)
530
+ end
531
+
532
+ should "two commits in second branch" do
533
+ assert_equal %w[0000000 3333333], commits_for_branch(1)
534
+ end
535
+
536
+ should "have three commits in third branch" do
537
+ assert_equal %w[1111111 2222222 4444444], commits_for_branch(2)
538
+ end
539
+
540
+ should "have two commits in fourth branch" do
541
+ assert_equal %w[4444444 5555555], commits_for_branch(3)
542
+ end
543
+ end
544
+
545
+ # 0
546
+ # |\
547
+ # | 0
548
+ # | |\
549
+ # | | 0
550
+ # |/ |
551
+ # 0 |
552
+ # |\ |
553
+ # | 0 |
554
+ # | | |
555
+ # | 0 |
556
+ # | | |
557
+ # | 0-|
558
+ # | | |\
559
+ # | | | 0
560
+ # |/ | |
561
+ # 0 | |
562
+ # |\ | |
563
+ # | 0 | |
564
+ # | | | |
565
+ context "Four dangling branches" do
566
+ setup do
567
+ load_fixture("4x_dangling_branches.txt")
568
+ end
569
+
570
+ should "have seven branches" do
571
+ assert_equal 6, branches.length
572
+ end
573
+
574
+ should "have 3 commits in the first branch" do
575
+ assert_equal %w[44c5c1d 1f2b8a4 ca2d07e], commits_for_branch(0)
576
+ end
577
+
578
+ should "have 3 commits in the second branch" do
579
+ assert_equal %w[44c5c1d e81d019 1f2b8a4], commits_for_branch(1)
580
+ end
581
+
582
+ should "have 2 commits in the third branch" do
583
+ assert_equal %w[e81d019 bbbd502], commits_for_branch(2)
584
+ end
585
+
586
+ should "have 5 commits in the fourth branch" do
587
+ assert_equal %w[1f2b8a4 275932a 7487183 a2f271b ca2d07e], commits_for_branch(3)
588
+ end
589
+
590
+ should "have 2 commits in the fifth branch" do
591
+ assert_equal %w[a2f271b 3ec0ec6], commits_for_branch(4)
592
+ end
593
+
594
+ should "have 2 commits in the sixth branch" do
595
+ assert_equal %w[ca2d07e c4e7446], commits_for_branch(5)
596
+ end
597
+ end
598
+
268
599
  context "Streaming parser" do
269
600
  setup do
270
601
  @lines = fixture("complex_graph_no_ff.txt").split("\n")
@@ -0,0 +1,18 @@
1
+ * 44c5c1d3726701942e684f1197c8f0d23c132e3e§1f2b8a4e3f61ffedf9908e28b280de8c6bf38a16 e81d019a466d135ea37dba95284af15bb0e12ed0§Tue May 10 13:51:23 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/2222'§
2
+ |\
3
+ | * e81d019a466d135ea37dba95284af15bb0e12ed0§1f2b8a4e3f61ffedf9908e28b280de8c6bf38a16 bbbd50287162c64401d610d26634767c8b6fbba2§Tue May 10 13:38:18 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/2222' of gitorious.org:gitorious/mainline into merge-requests/2222§
4
+ | |\
5
+ |/ /
6
+ | * bbbd50287162c64401d610d26634767c8b6fbba2§a28894f12d2dbb28b7e1ba9ed7b751200b4758e8§Thu Dec 16 13:28:23 2010 +0100§pkj@axis.com§§Allow raw blobs to be retrieved using a blob SHA-1§
7
+ * | 1f2b8a4e3f61ffedf9908e28b280de8c6bf38a16§ca2d07e0172565c9e0f18d41e49b70d7d75fced6 275932ab0995a11fcebeb0af7f19a7b8df5dea3f§Tue May 10 13:04:10 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/147'§
8
+ |\ \
9
+ | * | 275932ab0995a11fcebeb0af7f19a7b8df5dea3f§74871838e08fc666e9006cae35cdc67a5dcea258§Tue May 10 13:03:58 2011 +0200§christian@gitorious.org§§Add test for redirect from openid creation to dashboard§
10
+ | * | 74871838e08fc666e9006cae35cdc67a5dcea258§a2f271b1aa55e52ba848779c62a6fa02cbc5ea0c§Tue May 10 13:01:00 2011 +0200§christian@gitorious.org§§Formatting§
11
+ | * | a2f271b1aa55e52ba848779c62a6fa02cbc5ea0c§ca2d07e0172565c9e0f18d41e49b70d7d75fced6 3ec0ec68ac9ae2db3f222dfe1842cd2c6812cf97§Tue May 10 12:50:35 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/147' of gitorious.org:gitorious/mainline into merge-requests/147§
12
+ | |\ \
13
+ |/ / /
14
+ | * | 3ec0ec68ac9ae2db3f222dfe1842cd2c6812cf97§0685c52dd27dba8eaa6ec6f6bfacf014d37a6a1b§Tue Apr 12 10:04:20 2011 +1000§openid@obfusc8.org§§Bug: Do not redirect_back_or_default on new OpenID§
15
+ * | | ca2d07e0172565c9e0f18d41e49b70d7d75fced6§3370cb3615b3368be97c0f39b86f5dc2f9fa3650 c4e7446e2a98f1bf28da51fc57bb42b532222942§Tue May 10 12:47:08 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/2230'§
16
+ |\ \ \
17
+ | * \ \ c4e7446e2a98f1bf28da51fc57bb42b532222942§c3e1d675667939e64ced1bb5b541c9042a1d60f8 c1e52fba9e7c88f1146bb6df1f8b58dff006f45e§Tue May 10 12:41:19 2011 +0200§christian@gitorious.org§§Merge commit 'refs/merge-requests/2230' of gitorious.org:gitorious/mainline into merge-requests/2230§
18
+ | |\ \ \
@@ -0,0 +1,20 @@
1
+ 0f5480086cb66c10759334aa4f2bb803a074dc99§5bdf304b3fb6ecddf89c855c7509c0e6bb2fd7fc§Mon Jul 11 13:44:29 2011 +0200§christian@gitorious.org§ (HEAD, master)§Readme noise§
2
+ 5bdf304b3fb6ecddf89c855c7509c0e6bb2fd7fc§2477a17e05dedcc101bddd94d836a892a3b330c1§Fri May 27 14:23:48 2011 +0200§christian@gitorious.org§ (zero, whateverss, whatever, topic, retsamz, retsamFsdfks, retsamFsdfkj, retsamFsdfk, retsamF, retsam, ohfuck, noness, nones, none, newbie, mutt-baby2, mutt-baby, fuckyeah22131, fuckyeah2213, fuckyeah22, fuckyeah2, chomba5, authfuckup9, authfuckup8, authfuckup7, authfuckup6, authfuckup5, authfuckup4, authfuckup3, authfuckup2, authfuckup10, authfuckup, 00000)§Updated acts as taggable has renamed the tag class§
3
+ 2477a17e05dedcc101bddd94d836a892a3b330c1§ea4d6ce31bff83a64f6c0f76def8f9431cc344ed 13c727b96b4040bc7932d1fbb8bc7d91497a6cc7§Fri May 27 10:45:35 2011 +0200§christian@gitorious.org§§Resolve merge conflict§
4
+ 13c727b96b4040bc7932d1fbb8bc7d91497a6cc7§bd73540d175c48ab48311d88d52c63493faa33bd§Tue May 24 15:53:33 2011 +0200§marius@gitorious.org§§Prevent Messages#index from choking on senders being removed.§
5
+ bd73540d175c48ab48311d88d52c63493faa33bd§6fb3997a0385b015147f2d4a92caf78ccd22421e§Mon May 23 16:13:59 2011 +0200§marius@gitorious.org§§Revert "Fix a bug in Grit that causes rev_list to show commits in the wrong order."§
6
+ 6fb3997a0385b015147f2d4a92caf78ccd22421e§9266f54dd9669eae5c18d24ec2edc5262d7e4896§Mon May 23 16:10:49 2011 +0200§marius@gitorious.org§§Fix a bug in Grit that causes rev_list to show commits in the wrong order.§
7
+ 9266f54dd9669eae5c18d24ec2edc5262d7e4896§a5f9deb5cdc87e1e350a0e8a20b24b416bde1d3b§Thu May 19 15:33:23 2011 +0200§marius@gitorious.org§§Taking a stab at making a solr adapter for Gitorious::Search§
8
+ a5f9deb5cdc87e1e350a0e8a20b24b416bde1d3b§1551dfe855f6351c6d8376ea857a307c239e6c2c§Wed May 18 15:56:28 2011 +0200§marius@gitorious.org§§Moving search components into separate files/modules§
9
+ 1551dfe855f6351c6d8376ea857a307c239e6c2c§16d2ac1cd6bedb231a4c0c85d313c8ffaac4debf§Wed May 18 15:04:28 2011 +0200§marius@gitorious.org§§Wrapped the various calls to the Sphinx wrapper§
10
+ 16d2ac1cd6bedb231a4c0c85d313c8ffaac4debf§1e69972be452c595987e832e7b974647f58a9258§Wed May 18 09:14:02 2011 +0200§marius@gitorious.org§§Models that should be searchable should include Gitorious::Search§
11
+ 1e69972be452c595987e832e7b974647f58a9258§fdc39f6f7af5961b1ca592dfbc5dff28dfe71d69§Mon May 16 17:27:17 2011 +0200§marius@gitorious.org§§Adding a wrapper around Ultrasphinx: Gitorious::Search§
12
+ ea4d6ce31bff83a64f6c0f76def8f9431cc344ed§fdc39f6f7af5961b1ca592dfbc5dff28dfe71d69 74510fd077bb0dd686fff77c239218c17bf00073§Mon May 16 08:22:19 2011 +0200§christian@gitorious.org§§Merge branch 'merge-requests/153'§
13
+ 74510fd077bb0dd686fff77c239218c17bf00073§09b24865534f8e29d6cd1b0012852806b384a32f§Sun May 15 19:48:48 2011 -0300§rr.rosas@gmail.com§§Remove deprecation warnings from Paperclip usage§
14
+ 09b24865534f8e29d6cd1b0012852806b384a32f§4f0eaf7a3e98a446574a6418dbb91c86fd74ae62§Sun May 15 19:48:08 2011 -0300§rr.rosas@gmail.com§§refactoring: remove vendored paperclip plugin as it was already in Gemfile§
15
+ 4f0eaf7a3e98a446574a6418dbb91c86fd74ae62§fe57cfc4018635299f99bdf4fdd1976a2f7af40e§Sat May 14 11:13:41 2011 -0300§rr.rosas@gmail.com§§refactoring: Replaces vendored will_paginate plugin with its gem§
16
+ fe57cfc4018635299f99bdf4fdd1976a2f7af40e§cbdfa124bef64a45bfc0b4b2ba928ad2b9bf4030§Sat May 14 11:01:34 2011 -0300§rr.rosas@gmail.com§§refactoring: Replaces vendored ssl_requirement plugin with its gem§
17
+ cbdfa124bef64a45bfc0b4b2ba928ad2b9bf4030§81febec6cea77d5304f3b9efaf7bc7f53fda850a§Sat May 14 10:40:36 2011 -0300§rr.rosas@gmail.com§§refactoring: Replaces vendored exception_notifier plugin its gem§
18
+ 81febec6cea77d5304f3b9efaf7bc7f53fda850a§fdc39f6f7af5961b1ca592dfbc5dff28dfe71d69§Sat May 14 09:45:00 2011 -0300§rr.rosas@gmail.com§§refactoring: Replaces vendored acts_as_taggable_on_steroids plugin with acts-as-taggable-on gem§
19
+ fdc39f6f7af5961b1ca592dfbc5dff28dfe71d69§9002b5b37bb5a56decb16bcf8b9079988669ac27§Thu May 12 22:08:09 2011 -0300§rr.rosas@gmail.com§§Remove deprecation warnings from Shoulda§
20
+ 9002b5b37bb5a56decb16bcf8b9079988669ac27§5866405b13eee4a558c16b2e6feacf53982ff2f1§Thu May 12 21:57:23 2011 -0300§rr.rosas@gmail.com§§Fix indenting in unit/repository_test.rb§
@@ -0,0 +1,11 @@
1
+ * 0f5480086cb66c10759334aa4f2bb803a074dc99§5bdf304b3fb6ecddf89c855c7509c0e6bb2fd7fc§Mon Jul 11 13:44:29 2011 +0200§christian@gitorious.org§ (HEAD, master)§Readme noise§
2
+ * 5bdf304b3fb6ecddf89c855c7509c0e6bb2fd7fc§2477a17e05dedcc101bddd94d836a892a3b330c1§Fri May 27 14:23:48 2011 +0200§christian@gitorious.org§ (zero, topic, retsamz, newbie, mutt-baby2, mutt-baby, chomba5)§Updated acts as taggable has renamed the tag class§
3
+ * 2477a17e05dedcc101bddd94d836a892a3b330c1§ea4d6ce31bff83a64f6c0f76def8f9431cc344ed 13c727b96b4040bc7932d1fbb8bc7d91497a6cc7§Fri May 27 10:45:35 2011 +0200§christian@gitorious.org§§Resolve merge conflict§
4
+ |\
5
+ | * 13c727b96b4040bc7932d1fbb8bc7d91497a6cc7§bd73540d175c48ab48311d88d52c63493faa33bd§Tue May 24 15:53:33 2011 +0200§marius@gitorious.org§§Prevent Messages#index from choking on senders being removed.§
6
+ | * bd73540d175c48ab48311d88d52c63493faa33bd§6fb3997a0385b015147f2d4a92caf78ccd22421e§Mon May 23 16:13:59 2011 +0200§marius@gitorious.org§§Revert "Fix a bug in Grit that causes rev_list to show commits in the wrong order."§
7
+ | * 6fb3997a0385b015147f2d4a92caf78ccd22421e§9266f54dd9669eae5c18d24ec2edc5262d7e4896§Mon May 23 16:10:49 2011 +0200§marius@gitorious.org§§Fix a bug in Grit that causes rev_list to show commits in the wrong order.§
8
+ | * 9266f54dd9669eae5c18d24ec2edc5262d7e4896§a5f9deb5cdc87e1e350a0e8a20b24b416bde1d3b§Thu May 19 15:33:23 2011 +0200§marius@gitorious.org§§Taking a stab at making a solr adapter for Gitorious::Search§
9
+ | * a5f9deb5cdc87e1e350a0e8a20b24b416bde1d3b§1551dfe855f6351c6d8376ea857a307c239e6c2c§Wed May 18 15:56:28 2011 +0200§marius@gitorious.org§§Moving search components into separate files/modules§
10
+ | * 1551dfe855f6351c6d8376ea857a307c239e6c2c§16d2ac1cd6bedb231a4c0c85d313c8ffaac4debf§Wed May 18 15:04:28 2011 +0200§marius@gitorious.org§§Wrapped the various calls to the Sphinx wrapper§
11
+ | * 16d2ac1cd6bedb231a4c0c85d313c8ffaac4debf§1e69972be452c595987e832e7b974647f58a9258§Wed May 18 09:14:02 2011 +0200§marius@gitorious.org§§Models that should be searchable should include Gitorious::Search§
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capillary
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marius Mathiesen
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-22 00:00:00 +02:00
19
+ date: 2011-08-23 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -89,9 +89,12 @@ files:
89
89
  - lib/capillary/version.rb
90
90
  - test/capillary/commit_test.rb
91
91
  - test/capillary/log_parser_test.rb
92
+ - test/fixtures/4x_dangling_branches.txt
92
93
  - test/fixtures/complex_graph.txt
93
94
  - test/fixtures/complex_graph_no_ff.txt
95
+ - test/fixtures/double_fork.txt
94
96
  - test/fixtures/first_commit.txt
97
+ - test/fixtures/log_graph.txt
95
98
  - test/fixtures/parent_commit.txt
96
99
  - test/fixtures/simple_graph_no_ff.txt
97
100
  - test/fixtures/third_commit.txt