git-svn: expand the svn mergeinfo test suite, highlighting some failures
As shown, git-svn has some problems; not all svn merges are correctly detected, and cherry picks may incorrectly be detected as real merges. These test cases will be marked as _success once the relevant fixes are in. Signed-off-by: Sam Vilain <sam@vilain.net> Acked-by: Eric Wong <normalperson@yhbt.net>
Sam Vilain committed
Dec 20, 2009 at 05:20 UTC
1d144aa25edbb4dcda88abbaef8f336108b8d788
3 files changed
+860
-172
t/t9151-svn-mergeinfo.sh
+21
-6
@@ -15,12 +15,27 @@ test_expect_success 'load svn dump' "
15
git svn fetch --all
16
"
17
18
-test_expect_success 'represent svn merges without intervening commits' "
19
- [ `git cat-file commit HEAD^1 | grep parent | wc -l` -eq 2 ]
20
- "
18
+test_expect_failure 'all svn merges became git merge commits' '
19
+ unmarked=$(git rev-list --parents --all --grep=Merge |
20
+ grep -v " .* " | cut -f1 -d" ")
21
+ [ -z "$unmarked" ]
22
+ '
23
22
-test_expect_success 'represent svn merges with intervening commits' "
23
- [ `git cat-file commit HEAD | grep parent | wc -l` -eq 2 ]
24
- "
24
+test_expect_failure 'cherry picks did not become git merge commits' '
25
+ bad_cherries=$(git rev-list --parents --all --grep=Cherry |
26
+ grep " .* " | cut -f1 -d" ")
27
+ [ -z "$bad_cherries" ]
28
+ '
29
+
30
+test_expect_success 'svn non-merge merge commits did not become git merge commits' '
31
+ bad_non_merges=$(git rev-list --parents --all --grep=non-merge |
32
+ grep " .* " | cut -f1 -d" ")
33
+ [ -z "$bad_non_merges" ]
34
+ '
35
+
36
+test_expect_failure 'everything got merged in the end' '
37
+ unmerged=$(git rev-list --all --not master)
38
+ [ -z "$unmerged" ]
39
+ '
40
41
test_done
t/t9151/make-svnmerge-dump
+112
-54
@@ -11,93 +11,151 @@ mkdir foo.svn
11
svnadmin create foo.svn
12
svn co file://`pwd`/foo.svn foo
13
14
+commit() {
15
+ i=$(( $1 + 1 ))
16
+ shift;
17
+ svn commit -m "(r$i) $*" >/dev/null || exit 1
18
+ echo $i
19
+}
20
+
21
+say() {
22
+ echo "[1m * $*[0m"
23
+}
24
+
25
+i=0
26
cd foo
27
mkdir trunk
28
mkdir branches
29
svn add trunk branches
18
-svn commit -m "Setup trunk and branches"
19
-cd trunk
30
+i=$(commit $i "Setup trunk and branches")
31
21
-git cat-file blob 6683463e:Makefile > Makefile
22
-svn add Makefile
32
+git cat-file blob 6683463e:Makefile > trunk/Makefile
33
+svn add trunk/Makefile
34
24
-echo "Committing ANCESTOR"
25
-svn commit -m "ancestor"
26
-cd ..
35
+say "Committing ANCESTOR"
36
+i=$(commit $i "ancestor")
37
svn cp trunk branches/left
38
29
-echo "Committing BRANCH POINT"
30
-svn commit -m "make left branch"
39
+say "Committing BRANCH POINT"
40
+i=$(commit $i "make left branch")
41
svn cp trunk branches/right
42
33
-echo "Committing other BRANCH POINT"
34
-svn commit -m "make right branch"
35
-cd branches/left/
43
+say "Committing other BRANCH POINT"
44
+i=$(commit $i "make right branch")
45
37
-#$sm init
38
-#svn commit -m "init svnmerge"
46
+say "Committing LEFT UPDATE"
47
+git cat-file blob 5873b67e:Makefile > branches/left/Makefile
48
+i=$(commit $i "left update 1")
49
40
-git cat-file blob 5873b67e:Makefile > Makefile
41
-echo "Committing BRANCH UPDATE 1"
42
-svn commit -m "left update 1"
43
-cd ../..
44
-
45
-cd trunk
46
-git cat-file blob 75118b13:Makefile > Makefile
47
-echo "Committing TRUNK UPDATE"
48
-svn commit -m "trunk update"
50
+git cat-file blob 75118b13:Makefile > branches/right/Makefile
51
+say "Committing RIGHT UPDATE"
52
+pre_right_update_1=$i
53
+i=$(commit $i "right update 1")
54
50
-cd ../branches/left
51
-git cat-file blob ff5ebe39:Makefile > Makefile
52
-echo "Committing BRANCH UPDATE 2"
53
-svn commit -m "left update 2"
55
+say "Making more commits on LEFT"
56
+git cat-file blob ff5ebe39:Makefile > branches/left/Makefile
57
+i=$(commit $i "left update 2")
58
+git cat-file blob b5039db6:Makefile > branches/left/Makefile
59
+i=$(commit $i "left update 3")
60
55
-git cat-file blob b5039db6:Makefile > Makefile
56
-echo "Committing BRANCH UPDATE 3"
57
-svn commit -m "left update 3"
61
+say "Making a LEFT SUB-BRANCH"
62
+svn cp branches/left branches/left-sub
63
+sub_left_make=$i
64
+i=$(commit $i "make left sub-branch")
65
59
-# merge to trunk
66
+say "Making a commit on LEFT SUB-BRANCH"
67
+echo "crunch" > branches/left-sub/README
68
+svn add branches/left-sub/README
69
+i=$(commit $i "left sub-branch update 1")
70
61
-cd ../..
71
+say "Merging LEFT to TRUNK"
72
svn update
73
cd trunk
64
-
74
svn merge ../branches/left --accept postpone
66
-
67
-git cat-file blob b51ad431:Makefile > Makefile
68
-
75
+git cat-file blob b5039db6:Makefile > Makefile
76
svn resolved Makefile
77
+i=$(commit $i "Merge left to trunk 1")
78
+cd ..
79
71
-svn commit -m "Merge trunk 1"
72
-
73
-# create commits on both branches
74
-
75
-cd ../branches/left
76
-git cat-file blob ff5ebe39:Makefile > Makefile
77
-echo "Committing BRANCH UPDATE 4"
78
-svn commit -m "left update 4"
79
-
80
-cd ../right
81
-git cat-file blob b5039db6:Makefile > Makefile
82
-echo "Committing other BRANCH UPDATE 1"
83
-svn commit -m "right update 1"
80
+say "Making more commits on LEFT and RIGHT"
81
+echo "touche" > branches/left/zlonk
82
+svn add branches/left/zlonk
83
+i=$(commit $i "left update 4")
84
+echo "thwacke" > branches/right/bang
85
+svn add branches/right/bang
86
+i=$(commit $i "right update 2")
87
85
-# merge to trun again
88
+say "Squash merge of RIGHT tip 2 commits onto TRUNK"
89
+svn update
90
+cd trunk
91
+svn merge -r$pre_right_update_1:$i ../branches/right
92
+i=$(commit $i "Cherry-pick right 2 commits to trunk")
93
+cd ..
94
87
-cd ../..
95
+say "Merging RIGHT to TRUNK"
96
svn update
97
cd trunk
98
+svn merge ../branches/right --accept postpone
99
+git cat-file blob b51ad431:Makefile > Makefile
100
+svn resolved Makefile
101
+i=$(commit $i "Merge right to trunk 1")
102
+cd ..
103
91
-svn merge ../branches/left --accept postpone
104
+say "Making more commits on RIGHT and TRUNK"
105
+echo "whamm" > branches/right/urkkk
106
+svn add branches/right/urkkk
107
+i=$(commit $i "right update 3")
108
+echo "pow" > trunk/vronk
109
+svn add trunk/vronk
110
+i=$(commit $i "trunk update 1")
111
112
+say "Merging RIGHT to LEFT SUB-BRANCH"
113
+svn update
114
+cd branches/left-sub
115
+svn merge ../right --accept postpone
116
git cat-file blob b51ad431:Makefile > Makefile
94
-
117
svn resolved Makefile
118
+i=$(commit $i "Merge right to left sub-branch")
119
+cd ../..
120
97
-svn commit -m "Merge trunk 2"
121
+say "Making more commits on LEFT SUB-BRANCH and LEFT"
122
+echo "zowie" > branches/left-sub/wham_eth
123
+svn add branches/left-sub/wham_eth
124
+pre_sub_left_update_2=$i
125
+i=$(commit $i "left sub-branch update 2")
126
+sub_left_update_2=$i
127
+echo "eee_yow" > branches/left/glurpp
128
+svn add branches/left/glurpp
129
+i=$(commit $i "left update 5")
130
+
131
+say "Cherry pick LEFT SUB-BRANCH commit to LEFT"
132
+svn update
133
+cd branches/left
134
+svn merge -r$pre_sub_left_update_2:$sub_left_update_2 ../left-sub
135
+i=$(commit $i "Cherry-pick left sub-branch commit to left")
136
+cd ../..
137
138
+say "Merging LEFT SUB-BRANCH back to LEFT"
139
+svn update
140
+cd branches/left
141
+# it's only a merge because the previous merge cherry-picked the top commit
142
+svn merge -r$sub_left_make:$sub_left_update_2 ../left-sub --accept postpone
143
+i=$(commit $i "Merge left sub-branch to left")
144
cd ../..
145
146
+say "Merging EVERYTHING to TRUNK"
147
+svn update
148
+cd trunk
149
+svn merge ../branches/left --accept postpone
150
+svn resolved bang
151
+i=$(commit $i "Merge left to trunk 2")
152
+# this merge, svn happily updates the mergeinfo, but there is actually
153
+# nothing to merge. git-svn will not make a meaningless merge commit.
154
+svn merge ../branches/right --accept postpone
155
+i=$(commit $i "non-merge right to trunk 2")
156
+cd ..
157
+
158
+cd ..
159
svnadmin dump foo.svn > svn-mergeinfo.dump
160
161
rm -rf foo foo.svn
t/t9151/svn-mergeinfo.dump
+727
-112
@@ -1,6 +1,6 @@
1
SVN-fs-dump-format-version: 2
2
3
-UUID: 1530d5a2-a1dc-4438-8ad5-d95e96db8945
3
+UUID: 64142547-0943-4db2-836a-d1e1eb2f9924
4
5
Revision-number: 0
6
Prop-content-length: 56
@@ -9,25 +9,25 @@ Content-length: 56
9
K 8
10
svn:date
11
V 27
12
-2009-11-12T20:29:38.812226Z
12
+2009-12-19T16:17:51.232640Z
13
PROPS-END
14
15
Revision-number: 1
16
-Prop-content-length: 127
17
-Content-length: 127
16
+Prop-content-length: 128
17
+Content-length: 128
18
19
K 7
20
svn:log
21
-V 24
22
-Setup trunk and branches
21
+V 29
22
+(r1) Setup trunk and branches
23
K 10
24
svn:author
25
-V 8
26
-tallsopp
25
+V 4
26
+samv
27
K 8
28
svn:date
29
V 27
30
-2009-11-12T20:29:39.045856Z
30
+2009-12-19T16:17:51.831965Z
31
PROPS-END
32
33
Node-path: branches
@@ -49,21 +49,21 @@ PROPS-END
49
50
51
Revision-number: 2
52
-Prop-content-length: 110
53
-Content-length: 110
52
+Prop-content-length: 112
53
+Content-length: 112
54
55
K 7
56
svn:log
57
-V 8
58
-ancestor
57
+V 13
58
+(r2) ancestor
59
K 10
60
svn:author
61
-V 8
62
-tallsopp
61
+V 4
62
+samv
63
K 8
64
svn:date
65
V 27
66
-2009-11-12T20:29:40.079587Z
66
+2009-12-19T16:17:52.300075Z
67
PROPS-END
68
69
Node-path: trunk/Makefile
@@ -156,21 +156,21 @@ backup: clean
156
157
158
Revision-number: 3
159
-Prop-content-length: 119
160
-Content-length: 119
159
+Prop-content-length: 120
160
+Content-length: 120
161
162
K 7
163
svn:log
164
-V 16
165
-make left branch
164
+V 21
165
+(r3) make left branch
166
K 10
167
svn:author
168
-V 8
169
-tallsopp
168
+V 4
169
+samv
170
K 8
171
svn:date
172
V 27
173
-2009-11-12T20:29:42.084439Z
173
+2009-12-19T16:17:52.768800Z
174
PROPS-END
175
176
Node-path: branches/left
@@ -190,21 +190,21 @@ Text-copy-source-sha1: 103205ce331f7d64086dba497574734f78439590
190
191
192
Revision-number: 4
193
-Prop-content-length: 120
194
-Content-length: 120
193
+Prop-content-length: 121
194
+Content-length: 121
195
196
K 7
197
svn:log
198
-V 17
199
-make right branch
198
+V 22
199
+(r4) make right branch
200
K 10
201
svn:author
202
-V 8
203
-tallsopp
202
+V 4
203
+samv
204
K 8
205
svn:date
206
V 27
207
-2009-11-12T20:29:44.065452Z
207
+2009-12-19T16:17:53.177879Z
208
PROPS-END
209
210
Node-path: branches/right
@@ -224,21 +224,21 @@ Text-copy-source-sha1: 103205ce331f7d64086dba497574734f78439590
224
225
226
Revision-number: 5
227
-Prop-content-length: 116
228
-Content-length: 116
227
+Prop-content-length: 117
228
+Content-length: 117
229
230
K 7
231
svn:log
232
-V 13
233
-left update 1
232
+V 18
233
+(r5) left update 1
234
K 10
235
svn:author
236
-V 8
237
-tallsopp
236
+V 4
237
+samv
238
K 8
239
svn:date
240
V 27
241
-2009-11-12T20:29:45.066262Z
241
+2009-12-19T16:17:53.604691Z
242
PROPS-END
243
244
Node-path: branches/left/Makefile
@@ -329,24 +329,24 @@ backup: clean
329
330
331
Revision-number: 6
332
-Prop-content-length: 115
333
-Content-length: 115
332
+Prop-content-length: 118
333
+Content-length: 118
334
335
K 7
336
svn:log
337
-V 12
338
-trunk update
337
+V 19
338
+(r6) right update 1
339
K 10
340
svn:author
341
-V 8
342
-tallsopp
341
+V 4
342
+samv
343
K 8
344
svn:date
345
V 27
346
-2009-11-12T20:29:46.278498Z
346
+2009-12-19T16:17:54.063555Z
347
PROPS-END
348
349
-Node-path: trunk/Makefile
349
+Node-path: branches/right/Makefile
350
Node-kind: file
351
Node-action: change
352
Text-content-length: 2521
@@ -437,21 +437,21 @@ backup: clean
437
438
439
Revision-number: 7
440
-Prop-content-length: 116
441
-Content-length: 116
440
+Prop-content-length: 117
441
+Content-length: 117
442
443
K 7
444
svn:log
445
-V 13
446
-left update 2
445
+V 18
446
+(r7) left update 2
447
K 10
448
svn:author
449
-V 8
450
-tallsopp
449
+V 4
450
+samv
451
K 8
452
svn:date
453
V 27
454
-2009-11-12T20:29:47.069090Z
454
+2009-12-19T16:17:54.523904Z
455
PROPS-END
456
457
Node-path: branches/left/Makefile
@@ -542,21 +542,21 @@ backup: clean
542
543
544
Revision-number: 8
545
-Prop-content-length: 116
546
-Content-length: 116
545
+Prop-content-length: 117
546
+Content-length: 117
547
548
K 7
549
svn:log
550
-V 13
551
-left update 3
550
+V 18
551
+(r8) left update 3
552
K 10
553
svn:author
554
-V 8
555
-tallsopp
554
+V 4
555
+samv
556
K 8
557
svn:date
558
V 27
559
-2009-11-12T20:29:48.053835Z
559
+2009-12-19T16:17:54.975970Z
560
PROPS-END
561
562
Node-path: branches/left/Makefile
@@ -647,33 +647,285 @@ backup: clean
647
648
649
Revision-number: 9
650
-Prop-content-length: 116
651
-Content-length: 116
650
+Prop-content-length: 124
651
+Content-length: 124
652
653
K 7
654
svn:log
655
-V 13
656
-Merge trunk 1
655
+V 25
656
+(r9) make left sub-branch
657
+K 10
658
+svn:author
659
+V 4
660
+samv
661
+K 8
662
+svn:date
663
+V 27
664
+2009-12-19T16:17:55.459904Z
665
+PROPS-END
666
+
667
+Node-path: branches/left-sub
668
+Node-kind: dir
669
+Node-action: add
670
+Node-copyfrom-rev: 3
671
+Node-copyfrom-path: branches/left
672
+
673
+
674
+Node-path: branches/left-sub/Makefile
675
+Node-kind: file
676
+Node-action: delete
677
+
678
+Node-path: branches/left-sub/Makefile
679
+Node-kind: file
680
+Node-action: add
681
+Node-copyfrom-rev: 8
682
+Node-copyfrom-path: branches/left/Makefile
683
+Text-copy-source-md5: 5ccff689fb290e00b85fe18ee50c54ba
684
+Text-copy-source-sha1: a13de8e23f1483efca3e57b2b64b0ae6f740ce10
685
+
686
+
687
+
688
+
689
+Revision-number: 10
690
+Prop-content-length: 129
691
+Content-length: 129
692
+
693
+K 7
694
+svn:log
695
+V 30
696
+(r10) left sub-branch update 1
697
K 10
698
svn:author
659
-V 8
660
-tallsopp
699
+V 4
700
+samv
701
K 8
702
svn:date
703
V 27
664
-2009-11-12T20:29:51.098306Z
704
+2009-12-19T16:17:55.862113Z
705
+PROPS-END
706
+
707
+Node-path: branches/left-sub/README
708
+Node-kind: file
709
+Node-action: add
710
+Prop-content-length: 10
711
+Text-content-length: 7
712
+Text-content-md5: fdbcfb6be9afe1121862143f226b51cf
713
+Text-content-sha1: 1d1f5ea4ceb584337ffe59b8980d92e3b78dfef4
714
+Content-length: 17
715
+
716
+PROPS-END
717
+crunch
718
+
719
+
720
+Revision-number: 11
721
+Prop-content-length: 126
722
+Content-length: 126
723
+
724
+K 7
725
+svn:log
726
+V 27
727
+(r11) Merge left to trunk 1
728
+K 10
729
+svn:author
730
+V 4
731
+samv
732
+K 8
733
+svn:date
734
+V 27
735
+2009-12-19T16:17:56.413416Z
736
PROPS-END
737
738
Node-path: trunk
739
Node-kind: dir
740
Node-action: change
670
-Prop-content-length: 53
671
-Content-length: 53
741
+Prop-content-length: 54
742
+Content-length: 54
743
744
K 13
745
svn:mergeinfo
675
-V 18
676
-/branches/left:2-8
746
+V 19
747
+/branches/left:2-10
748
+PROPS-END
749
+
750
+
751
+Node-path: trunk/Makefile
752
+Node-kind: file
753
+Node-action: change
754
+Text-content-length: 2593
755
+Text-content-md5: 5ccff689fb290e00b85fe18ee50c54ba
756
+Text-content-sha1: a13de8e23f1483efca3e57b2b64b0ae6f740ce10
757
+Content-length: 2593
758
+
759
+# -DCOLLISION_CHECK if you believe that SHA1's
760
+# 1461501637330902918203684832716283019655932542976 hashes do not give you
761
+# enough guarantees about no collisions between objects ever hapenning.
762
+#
763
+# -DNSEC if you want git to care about sub-second file mtimes and ctimes.
764
+# Note that you need some new glibc (at least >2.2.4) for this, and it will
765
+# BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely randomly
766
+# break unless your underlying filesystem supports those sub-second times
767
+# (my ext3 doesn't).
768
+CFLAGS=-g -O3 -Wall
769
+
770
+CC=gcc
771
+
772
+
773
+PROG= update-cache show-diff init-db write-tree read-tree commit-tree \
774
+ cat-file fsck-cache checkout-cache diff-tree rev-tree show-files \
775
+ check-files ls-tree merge-base
776
+
777
+all: $(PROG)
778
+
779
+install: $(PROG)
780
+ install $(PROG) $(HOME)/bin/
781
+
782
+LIBS= -lssl -lz
783
+
784
+init-db: init-db.o
785
+
786
+update-cache: update-cache.o read-cache.o
787
+ $(CC) $(CFLAGS) -o update-cache update-cache.o read-cache.o $(LIBS)
788
+
789
+show-diff: show-diff.o read-cache.o
790
+ $(CC) $(CFLAGS) -o show-diff show-diff.o read-cache.o $(LIBS)
791
+
792
+write-tree: write-tree.o read-cache.o
793
+ $(CC) $(CFLAGS) -o write-tree write-tree.o read-cache.o $(LIBS)
794
+
795
+read-tree: read-tree.o read-cache.o
796
+ $(CC) $(CFLAGS) -o read-tree read-tree.o read-cache.o $(LIBS)
797
+
798
+commit-tree: commit-tree.o read-cache.o
799
+ $(CC) $(CFLAGS) -o commit-tree commit-tree.o read-cache.o $(LIBS)
800
+
801
+cat-file: cat-file.o read-cache.o
802
+ $(CC) $(CFLAGS) -o cat-file cat-file.o read-cache.o $(LIBS)
803
+
804
+fsck-cache: fsck-cache.o read-cache.o object.o commit.o tree.o blob.o
805
+ $(CC) $(CFLAGS) -o fsck-cache fsck-cache.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)
806
+
807
+checkout-cache: checkout-cache.o read-cache.o
808
+ $(CC) $(CFLAGS) -o checkout-cache checkout-cache.o read-cache.o $(LIBS)
809
+
810
+diff-tree: diff-tree.o read-cache.o
811
+ $(CC) $(CFLAGS) -o diff-tree diff-tree.o read-cache.o $(LIBS)
812
+
813
+rev-tree: rev-tree.o read-cache.o object.o commit.o tree.o blob.o
814
+ $(CC) $(CFLAGS) -o rev-tree rev-tree.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)
815
+
816
+show-files: show-files.o read-cache.o
817
+ $(CC) $(CFLAGS) -o show-files show-files.o read-cache.o $(LIBS)
818
+
819
+check-files: check-files.o read-cache.o
820
+ $(CC) $(CFLAGS) -o check-files check-files.o read-cache.o $(LIBS)
821
+
822
+ls-tree: ls-tree.o read-cache.o
823
+ $(CC) $(CFLAGS) -o ls-tree ls-tree.o read-cache.o $(LIBS)
824
+
825
+merge-base: merge-base.o read-cache.o object.o commit.o tree.o blob.o
826
+ $(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)
827
+
828
+read-cache.o: cache.h
829
+show-diff.o: cache.h
830
+
831
+clean:
832
+ rm -f *.o $(PROG)
833
+
834
+backup: clean
835
+ cd .. ; tar czvf dircache.tar.gz dir-cache
836
+
837
+
838
+Revision-number: 12
839
+Prop-content-length: 118
840
+Content-length: 118
841
+
842
+K 7
843
+svn:log
844
+V 19
845
+(r12) left update 4
846
+K 10
847
+svn:author
848
+V 4
849
+samv
850
+K 8
851
+svn:date
852
+V 27
853
+2009-12-19T16:17:56.831014Z
854
+PROPS-END
855
+
856
+Node-path: branches/left/zlonk
857
+Node-kind: file
858
+Node-action: add
859
+Prop-content-length: 10
860
+Text-content-length: 7
861
+Text-content-md5: 8b9d8c7c2aaa6167e7d3407a773bbbba
862
+Text-content-sha1: 9716527ebd70a75c27625cacbeb2d897c6e86178
863
+Content-length: 17
864
+
865
+PROPS-END
866
+touche
867
+
868
+
869
+Revision-number: 13
870
+Prop-content-length: 119
871
+Content-length: 119
872
+
873
+K 7
874
+svn:log
875
+V 20
876
+(r13) right update 2
877
+K 10
878
+svn:author
879
+V 4
880
+samv
881
+K 8
882
+svn:date
883
+V 27
884
+2009-12-19T16:17:57.341143Z
885
+PROPS-END
886
+
887
+Node-path: branches/right/bang
888
+Node-kind: file
889
+Node-action: add
890
+Prop-content-length: 10
891
+Text-content-length: 8
892
+Text-content-md5: 34c28f1d2dc6a9adeccc4265bf7516cb
893
+Text-content-sha1: 0bc5bb345c0e71d28f784f12e0bd2d384c283062
894
+Content-length: 18
895
+
896
+PROPS-END
897
+thwacke
898
+
899
+
900
+Revision-number: 14
901
+Prop-content-length: 141
902
+Content-length: 141
903
+
904
+K 7
905
+svn:log
906
+V 42
907
+(r14) Cherry-pick right 2 commits to trunk
908
+K 10
909
+svn:author
910
+V 4
911
+samv
912
+K 8
913
+svn:date
914
+V 27
915
+2009-12-19T16:17:57.841851Z
916
+PROPS-END
917
+
918
+Node-path: trunk
919
+Node-kind: dir
920
+Node-action: change
921
+Prop-content-length: 75
922
+Content-length: 75
923
+
924
+K 13
925
+svn:mergeinfo
926
+V 40
927
+/branches/left:2-10
928
+/branches/right:6-13
929
PROPS-END
930
931
@@ -767,31 +1019,147 @@ backup: clean
1019
cd .. ; tar czvf dircache.tar.gz dir-cache
1020
1021
770
-Revision-number: 10
771
-Prop-content-length: 116
772
-Content-length: 116
1022
+Node-path: trunk/bang
1023
+Node-kind: file
1024
+Node-action: add
1025
+Node-copyfrom-rev: 13
1026
+Node-copyfrom-path: branches/right/bang
1027
+Text-copy-source-md5: 34c28f1d2dc6a9adeccc4265bf7516cb
1028
+Text-copy-source-sha1: 0bc5bb345c0e71d28f784f12e0bd2d384c283062
1029
+
1030
+
1031
+Revision-number: 15
1032
+Prop-content-length: 127
1033
+Content-length: 127
1034
1035
K 7
1036
svn:log
776
-V 13
777
-left update 4
1037
+V 28
1038
+(r15) Merge right to trunk 1
1039
K 10
1040
svn:author
780
-V 8
781
-tallsopp
1041
+V 4
1042
+samv
1043
K 8
1044
svn:date
1045
V 27
785
-2009-11-12T20:29:52.081644Z
1046
+2009-12-19T16:17:58.368520Z
1047
PROPS-END
1048
788
-Node-path: branches/left/Makefile
1049
+Node-path: trunk
1050
+Node-kind: dir
1051
+Node-action: change
1052
+Prop-content-length: 75
1053
+Content-length: 75
1054
+
1055
+K 13
1056
+svn:mergeinfo
1057
+V 40
1058
+/branches/left:2-10
1059
+/branches/right:2-14
1060
+PROPS-END
1061
+
1062
+
1063
+Revision-number: 16
1064
+Prop-content-length: 119
1065
+Content-length: 119
1066
+
1067
+K 7
1068
+svn:log
1069
+V 20
1070
+(r16) right update 3
1071
+K 10
1072
+svn:author
1073
+V 4
1074
+samv
1075
+K 8
1076
+svn:date
1077
+V 27
1078
+2009-12-19T16:17:58.779056Z
1079
+PROPS-END
1080
+
1081
+Node-path: branches/right/urkkk
1082
+Node-kind: file
1083
+Node-action: add
1084
+Prop-content-length: 10
1085
+Text-content-length: 6
1086
+Text-content-md5: 5889c8392e16251b0c80927607a03036
1087
+Text-content-sha1: 3934264d277a0cf886b6b1c7f2b9e56da2525302
1088
+Content-length: 16
1089
+
1090
+PROPS-END
1091
+whamm
1092
+
1093
+
1094
+Revision-number: 17
1095
+Prop-content-length: 119
1096
+Content-length: 119
1097
+
1098
+K 7
1099
+svn:log
1100
+V 20
1101
+(r17) trunk update 1
1102
+K 10
1103
+svn:author
1104
+V 4
1105
+samv
1106
+K 8
1107
+svn:date
1108
+V 27
1109
+2009-12-19T16:17:59.221851Z
1110
+PROPS-END
1111
+
1112
+Node-path: trunk/vronk
1113
Node-kind: file
1114
+Node-action: add
1115
+Prop-content-length: 10
1116
+Text-content-length: 4
1117
+Text-content-md5: b2f80fa02a7f1364b9c29d3da44bf9f9
1118
+Text-content-sha1: e994d980c0f2d7a3f76138bf96d57f36f9633828
1119
+Content-length: 14
1120
+
1121
+PROPS-END
1122
+pow
1123
+
1124
+
1125
+Revision-number: 18
1126
+Prop-content-length: 135
1127
+Content-length: 135
1128
+
1129
+K 7
1130
+svn:log
1131
+V 36
1132
+(r18) Merge right to left sub-branch
1133
+K 10
1134
+svn:author
1135
+V 4
1136
+samv
1137
+K 8
1138
+svn:date
1139
+V 27
1140
+2009-12-19T16:17:59.781666Z
1141
+PROPS-END
1142
+
1143
+Node-path: branches/left-sub
1144
+Node-kind: dir
1145
Node-action: change
791
-Text-content-length: 2529
792
-Text-content-md5: f6b197cc3f2e89a83e545d4bb003de73
793
-Text-content-sha1: 2f656677cfec0bceec85e53036ffb63e25126f8e
794
-Content-length: 2529
1146
+Prop-content-length: 55
1147
+Content-length: 55
1148
+
1149
+K 13
1150
+svn:mergeinfo
1151
+V 20
1152
+/branches/right:2-17
1153
+PROPS-END
1154
+
1155
+
1156
+Node-path: branches/left-sub/Makefile
1157
+Node-kind: file
1158
+Node-action: change
1159
+Text-content-length: 2713
1160
+Text-content-md5: 0afbe34f244cd662b1f97d708c687f90
1161
+Text-content-sha1: 46d9377d783e67a9b581da110352e799517c8a14
1162
+Content-length: 2713
1163
1164
# -DCOLLISION_CHECK if you believe that SHA1's
1165
# 1461501637330902918203684832716283019655932542976 hashes do not give you
@@ -809,7 +1177,7 @@ CC=gcc
1177
1178
PROG= update-cache show-diff init-db write-tree read-tree commit-tree \
1179
cat-file fsck-cache checkout-cache diff-tree rev-tree show-files \
812
- check-files ls-tree merge-base
1180
+ check-files ls-tree merge-base merge-cache
1181
1182
all: $(PROG)
1183
@@ -859,8 +1227,11 @@ check-files: check-files.o read-cache.o
1227
ls-tree: ls-tree.o read-cache.o
1228
$(CC) $(CFLAGS) -o ls-tree ls-tree.o read-cache.o $(LIBS)
1229
862
-merge-base: merge-base.o read-cache.o
863
- $(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o $(LIBS)
1230
+merge-base: merge-base.o read-cache.o object.o commit.o tree.o blob.o
1231
+ $(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)
1232
+
1233
+merge-cache: merge-cache.o read-cache.o
1234
+ $(CC) $(CFLAGS) -o merge-cache merge-cache.o read-cache.o $(LIBS)
1235
1236
read-cache.o: cache.h
1237
show-diff.o: cache.h
@@ -872,31 +1243,165 @@ backup: clean
1243
cd .. ; tar czvf dircache.tar.gz dir-cache
1244
1245
875
-Revision-number: 11
876
-Prop-content-length: 117
877
-Content-length: 117
1246
+Node-path: branches/left-sub/bang
1247
+Node-kind: file
1248
+Node-action: add
1249
+Node-copyfrom-rev: 17
1250
+Node-copyfrom-path: branches/right/bang
1251
+Text-copy-source-md5: 34c28f1d2dc6a9adeccc4265bf7516cb
1252
+Text-copy-source-sha1: 0bc5bb345c0e71d28f784f12e0bd2d384c283062
1253
+
1254
+
1255
+Node-path: branches/left-sub/urkkk
1256
+Node-kind: file
1257
+Node-action: add
1258
+Node-copyfrom-rev: 17
1259
+Node-copyfrom-path: branches/right/urkkk
1260
+Text-copy-source-md5: 5889c8392e16251b0c80927607a03036
1261
+Text-copy-source-sha1: 3934264d277a0cf886b6b1c7f2b9e56da2525302
1262
+
1263
+
1264
+Revision-number: 19
1265
+Prop-content-length: 129
1266
+Content-length: 129
1267
1268
K 7
1269
svn:log
881
-V 14
882
-right update 1
1270
+V 30
1271
+(r19) left sub-branch update 2
1272
K 10
1273
svn:author
885
-V 8
886
-tallsopp
1274
+V 4
1275
+samv
1276
K 8
1277
svn:date
1278
V 27
890
-2009-11-12T20:29:53.059636Z
1279
+2009-12-19T16:18:00.200531Z
1280
PROPS-END
1281
893
-Node-path: branches/right/Makefile
1282
+Node-path: branches/left-sub/wham_eth
1283
+Node-kind: file
1284
+Node-action: add
1285
+Prop-content-length: 10
1286
+Text-content-length: 6
1287
+Text-content-md5: 757bcd5818572ef3f9580052617c1c8b
1288
+Text-content-sha1: b165019b005c199237ba822c4404e771e93b654a
1289
+Content-length: 16
1290
+
1291
+PROPS-END
1292
+zowie
1293
+
1294
+
1295
+Revision-number: 20
1296
+Prop-content-length: 118
1297
+Content-length: 118
1298
+
1299
+K 7
1300
+svn:log
1301
+V 19
1302
+(r20) left update 5
1303
+K 10
1304
+svn:author
1305
+V 4
1306
+samv
1307
+K 8
1308
+svn:date
1309
+V 27
1310
+2009-12-19T16:18:00.659636Z
1311
+PROPS-END
1312
+
1313
+Node-path: branches/left/glurpp
1314
Node-kind: file
1315
+Node-action: add
1316
+Prop-content-length: 10
1317
+Text-content-length: 8
1318
+Text-content-md5: 14a169f628e0bb59df9c2160649d0a30
1319
+Text-content-sha1: ef7d929e52177767ecfcd28941f6b7f04b4131e3
1320
+Content-length: 18
1321
+
1322
+PROPS-END
1323
+eee_yow
1324
+
1325
+
1326
+Revision-number: 21
1327
+Prop-content-length: 147
1328
+Content-length: 147
1329
+
1330
+K 7
1331
+svn:log
1332
+V 48
1333
+(r21) Cherry-pick left sub-branch commit to left
1334
+K 10
1335
+svn:author
1336
+V 4
1337
+samv
1338
+K 8
1339
+svn:date
1340
+V 27
1341
+2009-12-19T16:18:01.194402Z
1342
+PROPS-END
1343
+
1344
+Node-path: branches/left
1345
+Node-kind: dir
1346
Node-action: change
896
-Text-content-length: 2593
897
-Text-content-md5: 5ccff689fb290e00b85fe18ee50c54ba
898
-Text-content-sha1: a13de8e23f1483efca3e57b2b64b0ae6f740ce10
899
-Content-length: 2593
1347
+Prop-content-length: 56
1348
+Content-length: 56
1349
+
1350
+K 13
1351
+svn:mergeinfo
1352
+V 21
1353
+/branches/left-sub:19
1354
+PROPS-END
1355
+
1356
+
1357
+Node-path: branches/left/wham_eth
1358
+Node-kind: file
1359
+Node-action: add
1360
+Node-copyfrom-rev: 19
1361
+Node-copyfrom-path: branches/left-sub/wham_eth
1362
+Text-copy-source-md5: 757bcd5818572ef3f9580052617c1c8b
1363
+Text-copy-source-sha1: b165019b005c199237ba822c4404e771e93b654a
1364
+
1365
+
1366
+Revision-number: 22
1367
+Prop-content-length: 134
1368
+Content-length: 134
1369
+
1370
+K 7
1371
+svn:log
1372
+V 35
1373
+(r22) Merge left sub-branch to left
1374
+K 10
1375
+svn:author
1376
+V 4
1377
+samv
1378
+K 8
1379
+svn:date
1380
+V 27
1381
+2009-12-19T16:18:01.679218Z
1382
+PROPS-END
1383
+
1384
+Node-path: branches/left
1385
+Node-kind: dir
1386
+Node-action: change
1387
+Prop-content-length: 79
1388
+Content-length: 79
1389
+
1390
+K 13
1391
+svn:mergeinfo
1392
+V 44
1393
+/branches/left-sub:4-19
1394
+/branches/right:2-17
1395
+PROPS-END
1396
+
1397
+
1398
+Node-path: branches/left/Makefile
1399
+Node-kind: file
1400
+Node-action: change
1401
+Text-content-length: 2713
1402
+Text-content-md5: 0afbe34f244cd662b1f97d708c687f90
1403
+Text-content-sha1: 46d9377d783e67a9b581da110352e799517c8a14
1404
+Content-length: 2713
1405
1406
# -DCOLLISION_CHECK if you believe that SHA1's
1407
# 1461501637330902918203684832716283019655932542976 hashes do not give you
@@ -914,7 +1419,7 @@ CC=gcc
1419
1420
PROG= update-cache show-diff init-db write-tree read-tree commit-tree \
1421
cat-file fsck-cache checkout-cache diff-tree rev-tree show-files \
917
- check-files ls-tree merge-base
1422
+ check-files ls-tree merge-base merge-cache
1423
1424
all: $(PROG)
1425
@@ -967,6 +1472,9 @@ ls-tree: ls-tree.o read-cache.o
1472
merge-base: merge-base.o read-cache.o object.o commit.o tree.o blob.o
1473
$(CC) $(CFLAGS) -o merge-base merge-base.o read-cache.o object.o commit.o tree.o blob.o $(LIBS)
1474
1475
+merge-cache: merge-cache.o read-cache.o
1476
+ $(CC) $(CFLAGS) -o merge-cache merge-cache.o read-cache.o $(LIBS)
1477
+
1478
read-cache.o: cache.h
1479
show-diff.o: cache.h
1480
@@ -977,34 +1485,141 @@ backup: clean
1485
cd .. ; tar czvf dircache.tar.gz dir-cache
1486
1487
980
-Revision-number: 12
981
-Prop-content-length: 116
982
-Content-length: 116
1488
+Node-path: branches/left/README
1489
+Node-kind: file
1490
+Node-action: add
1491
+Node-copyfrom-rev: 18
1492
+Node-copyfrom-path: branches/left-sub/README
1493
+Text-copy-source-md5: fdbcfb6be9afe1121862143f226b51cf
1494
+Text-copy-source-sha1: 1d1f5ea4ceb584337ffe59b8980d92e3b78dfef4
1495
+
1496
+
1497
+Node-path: branches/left/bang
1498
+Node-kind: file
1499
+Node-action: add
1500
+Node-copyfrom-rev: 18
1501
+Node-copyfrom-path: branches/left-sub/bang
1502
+Text-copy-source-md5: 34c28f1d2dc6a9adeccc4265bf7516cb
1503
+Text-copy-source-sha1: 0bc5bb345c0e71d28f784f12e0bd2d384c283062
1504
+
1505
+
1506
+Node-path: branches/left/urkkk
1507
+Node-kind: file
1508
+Node-action: add
1509
+Node-copyfrom-rev: 18
1510
+Node-copyfrom-path: branches/left-sub/urkkk
1511
+Text-copy-source-md5: 5889c8392e16251b0c80927607a03036
1512
+Text-copy-source-sha1: 3934264d277a0cf886b6b1c7f2b9e56da2525302
1513
+
1514
+
1515
+Revision-number: 23
1516
+Prop-content-length: 126
1517
+Content-length: 126
1518
1519
K 7
1520
svn:log
986
-V 13
987
-Merge trunk 2
1521
+V 27
1522
+(r23) Merge left to trunk 2
1523
K 10
1524
svn:author
990
-V 8
991
-tallsopp
1525
+V 4
1526
+samv
1527
K 8
1528
svn:date
1529
V 27
995
-2009-11-12T20:29:56.083003Z
1530
+2009-12-19T16:18:02.212349Z
1531
PROPS-END
1532
1533
Node-path: trunk
1534
Node-kind: dir
1535
Node-action: change
1001
-Prop-content-length: 54
1002
-Content-length: 54
1536
+Prop-content-length: 99
1537
+Content-length: 99
1538
1539
K 13
1540
svn:mergeinfo
1006
-V 19
1007
-/branches/left:2-11
1541
+V 64
1542
+/branches/left:2-22
1543
+/branches/left-sub:4-19
1544
+/branches/right:2-17
1545
+PROPS-END
1546
+
1547
+
1548
+Node-path: trunk/README
1549
+Node-kind: file
1550
+Node-action: add
1551
+Node-copyfrom-rev: 22
1552
+Node-copyfrom-path: branches/left/README
1553
+Text-copy-source-md5: fdbcfb6be9afe1121862143f226b51cf
1554
+Text-copy-source-sha1: 1d1f5ea4ceb584337ffe59b8980d92e3b78dfef4
1555
+
1556
+
1557
+Node-path: trunk/glurpp
1558
+Node-kind: file
1559
+Node-action: add
1560
+Node-copyfrom-rev: 22
1561
+Node-copyfrom-path: branches/left/glurpp
1562
+Text-copy-source-md5: 14a169f628e0bb59df9c2160649d0a30
1563
+Text-copy-source-sha1: ef7d929e52177767ecfcd28941f6b7f04b4131e3
1564
+
1565
+
1566
+Node-path: trunk/urkkk
1567
+Node-kind: file
1568
+Node-action: add
1569
+Node-copyfrom-rev: 22
1570
+Node-copyfrom-path: branches/left/urkkk
1571
+Text-copy-source-md5: 5889c8392e16251b0c80927607a03036
1572
+Text-copy-source-sha1: 3934264d277a0cf886b6b1c7f2b9e56da2525302
1573
+
1574
+
1575
+Node-path: trunk/wham_eth
1576
+Node-kind: file
1577
+Node-action: add
1578
+Node-copyfrom-rev: 22
1579
+Node-copyfrom-path: branches/left/wham_eth
1580
+Text-copy-source-md5: 757bcd5818572ef3f9580052617c1c8b
1581
+Text-copy-source-sha1: b165019b005c199237ba822c4404e771e93b654a
1582
+
1583
+
1584
+Node-path: trunk/zlonk
1585
+Node-kind: file
1586
+Node-action: add
1587
+Node-copyfrom-rev: 22
1588
+Node-copyfrom-path: branches/left/zlonk
1589
+Text-copy-source-md5: 8b9d8c7c2aaa6167e7d3407a773bbbba
1590
+Text-copy-source-sha1: 9716527ebd70a75c27625cacbeb2d897c6e86178
1591
+
1592
+
1593
+Revision-number: 24
1594
+Prop-content-length: 131
1595
+Content-length: 131
1596
+
1597
+K 7
1598
+svn:log
1599
+V 32
1600
+(r24) non-merge right to trunk 2
1601
+K 10
1602
+svn:author
1603
+V 4
1604
+samv
1605
+K 8
1606
+svn:date
1607
+V 27
1608
+2009-12-19T16:18:02.672148Z
1609
+PROPS-END
1610
+
1611
+Node-path: trunk
1612
+Node-kind: dir
1613
+Node-action: change
1614
+Prop-content-length: 99
1615
+Content-length: 99
1616
+
1617
+K 13
1618
+svn:mergeinfo
1619
+V 64
1620
+/branches/left:2-22
1621
+/branches/left-sub:4-19
1622
+/branches/right:2-22
1623
PROPS-END
1624
1625