Commit | Line | Data |
---|---|---|
1fb08704 IJ |
1 | #!/bin/sh |
2 | set -ex | |
3 | base=$HOME/things/Adns/Cvs-Convert | |
4 | cd $base | |
5 | tmp=$base/tmp | |
6 | ||
7 | rm -rf converted | |
8 | ||
9 | if ! test -d $tmp/git-cvsi; then | |
10 | rm -rf tmp | |
11 | mkdir tmp | |
12 | git cvsimport -d `pwd`/cvs-repo -C tmp/git-cvsi.new -k -p --norc adns | |
13 | mv tmp/git-cvsi.new tmp/git-cvsi | |
14 | fi | |
15 | cd tmp | |
16 | ||
17 | rsync -aH --delete git-cvsi/. adjust | |
18 | cd adjust | |
19 | ||
20 | abandonbranch () { | |
21 | local oldbranchname=$1 | |
22 | local newtagname=$2 | |
23 | git tag $newtagname $oldbranchname | |
24 | git branch -D $oldbranchname | |
25 | } | |
26 | ensurenotag () { | |
27 | local tagname=$1 | |
28 | # these two together unconditionally delete the tag if it exists | |
29 | git tag -f $tagname master | |
30 | git tag -d $tagname | |
31 | } | |
32 | abandondatedbranch () { | |
33 | local date=$1 | |
34 | local olddesc=$2 | |
35 | local newdesc=$3 | |
36 | if [ "x$newdesc" = x ]; then newdesc=$olddesc; fi | |
37 | abandonbranch branch-$date-$olddesc abandon.$date.$newdesc | |
38 | ensurenotag branchpoint-$date-$olddesc master | |
39 | } | |
40 | ||
41 | abandonbranch branch-rrtypenoenum abandon.1998-10-04.rrtypenoenum | |
42 | abandondatedbranch 1999-04-10 mthread multithread | |
43 | abandondatedbranch 1999-04-11 ipv6 | |
44 | abandondatedbranch 1999-04-11 pollfds | |
45 | ||
46 | abandondatedbranch 2000-05-07 ipv6 | |
47 | abandonbranch branch-0-7-inftodebug abandon.2000-03-26.infotodebug-0.7 | |
48 | ||
49 | graftmergein () { | |
50 | local desc=$1 | |
51 | local mergecommit=$2 | |
52 | local branchname=branch-$desc | |
53 | mkdir -p .git/info | |
54 | local branchtip=`git rev-parse $branchname~0` | |
55 | local oldparents=`git-log -n1 --pretty=format:%P $mergecommit` | |
56 | cat <<END >>.git/info/grafts | |
57 | $2 $oldparents $branchtip | |
58 | END | |
59 | git branch -D $branchname | |
60 | ensurenotag mergepoint-$desc | |
61 | ensurenotag branchpoint-$desc | |
62 | } | |
63 | ||
64 | graftmergein logcallbackfn 741a795cdaa539b48f83afbc0ac8e471543b9bf6 | |
65 | graftmergein 1999-05-09-gplvslgpl e7cf3a99e5829bf53a9f36e08769787a78261045 | |
66 | ||
67 | xargs git tag -d <<END | |
68 | tochiark-1998-11-08 | |
69 | fromchiark-1998-11-09 | |
70 | tochiark-1998-11-09-b | |
71 | fromchiark-1998-11-14 | |
72 | tochiark-1998-11-15 | |
73 | tochiark-1998-11-17 | |
74 | fromchiark-1998-11-28 | |
75 | END | |
76 | ||
77 | git checkout master | |
78 | scr=cvs-to-git-conversion-script | |
79 | cp $base/convert $scr | |
80 | git add $scr | |
81 | git commit -m "$scr: record the script | |
82 | ||
83 | Record the script we used to convert the CVS repo to git" | |
84 | git rm $scr | |
85 | git commit -m "$scr: delete the script | |
86 | ||
87 | We have in fact done the conversion and don't need the script any more." | |
88 | ||
89 | git branch -d origin | |
90 | git tag cvs-to-git-conversion | |
91 | ||
92 | cat >$tmp/msg-filter <<'FEND' | |
93 | perl -ne ' | |
94 | $out .= $_; | |
95 | END { | |
96 | if ($out =~ m/^\@\@/s && | |
97 | $out =~ m/^(?:\+ )?[^\@ ].*\w.*$/m) { | |
98 | print $&, "\n\n" or die $!; | |
99 | } | |
100 | print $out or die $!; | |
101 | } | |
102 | ' | |
103 | FEND | |
104 | chmod +x $tmp/msg-filter | |
105 | ||
106 | git-filter-branch --msg-filter $tmp/msg-filter \ | |
107 | `git-show-ref | awk '{print $2}'` | |
108 | ||
109 | git-show-ref | awk '{print $2}' | grep '^refs/original/' \ | |
110 | | xargs -n1 git-update-ref -d | |
111 | ||
112 | rm -rf $tmp/converted | |
113 | mkdir $tmp/converted | |
114 | cd $tmp/converted | |
115 | git init | |
116 | git fetch -u $tmp/adjust 'refs/*:refs/*' | |
117 | git checkout master |