Commit | Line | Data |
---|---|---|
8f100340 MW |
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 | graftmergein () { | |
41 | local desc=$1 | |
42 | local mergecommit=$2 | |
43 | local branchname=branch-$desc | |
44 | mkdir -p .git/info | |
45 | local branchtip=`git rev-parse $branchname~0` | |
2a87cbc4 | 46 | local oldparents=`git log -n1 --pretty=format:%P $mergecommit` |
8f100340 MW |
47 | cat <<END >>.git/info/grafts |
48 | $2 $oldparents $branchtip | |
49 | END | |
50 | git branch -D $branchname | |
51 | ensurenotag mergepoint-$desc | |
52 | ensurenotag branchpoint-$desc | |
53 | } | |
54 | ||
55 | abandonbranch branch-rrtypenoenum abandon.1998-10-04.rrtypenoenum | |
56 | abandondatedbranch 1999-04-10 mthread multithread | |
57 | abandondatedbranch 1999-04-11 ipv6 | |
58 | ||
59 | abandondatedbranch 2000-05-07 ipv6 | |
60 | abandonbranch branch-0-7-inftodebug abandon.2000-03-26.infotodebug-0.7 | |
61 | ||
62 | graftmergein logcallbackfn 741a795cdaa539b48f83afbc0ac8e471543b9bf6 | |
63 | graftmergein 1999-05-09-gplvslgpl e7cf3a99e5829bf53a9f36e08769787a78261045 | |
64 | graftmergein 1999-04-11-pollfds f889c99835eec14dacda4b18da0636911dcd8cbc | |
65 | ||
66 | xargs git tag -d <<END | |
67 | tochiark-1998-11-08 | |
68 | fromchiark-1998-11-09 | |
69 | tochiark-1998-11-09-b | |
70 | fromchiark-1998-11-14 | |
71 | tochiark-1998-11-15 | |
72 | tochiark-1998-11-17 | |
73 | fromchiark-1998-11-28 | |
74 | END | |
75 | ||
4631609f IJ |
76 | (set -e |
77 | cd $base/script | |
78 | if [ x"`git diff`" != x ]; then | |
79 | git checkout master~0 | |
80 | git commit -a -m autocommit | |
81 | git tag -f actual | |
82 | git reset master | |
83 | git checkout master | |
6e1863b4 IJ |
84 | else |
85 | git tag -f actual | |
4631609f | 86 | fi) |
8f100340 | 87 | |
4631609f IJ |
88 | git checkout master |
89 | git fetch $base/script actual | |
90 | git merge -m 'CVS to git conversion | |
8f100340 | 91 | |
4631609f IJ |
92 | Record the scripts etc. we used (and their history) for posterity, |
93 | by binding them into the history.' FETCH_HEAD | |
8f100340 MW |
94 | |
95 | git branch -d origin | |
96 | git tag cvs-to-git-conversion | |
97 | ||
98 | cat >$tmp/msg-filter <<'FEND' | |
99 | perl -ne ' | |
100 | $out .= $_; | |
101 | END { | |
53057d8c MW |
102 | if ($out =~ /\*\*\* empty log message/) { |
103 | ($out = `git diff $ENV{GIT_COMMIT}^ $ENV{GIT_COMMIT} -- changelog`) | |
104 | =~ s/\A.*\n\@\@ /\@\@ /s; | |
105 | } | |
f1ec69ce MW |
106 | if ($out !~ /\n.*\n/) { |
107 | $out = `fmt <<'\''EOF'\'' | |
108 | $out | |
109 | EOF | |
110 | `; | |
111 | } | |
8f100340 | 112 | if ($out =~ m/^\@\@/s && |
95360dba MW |
113 | ($out =~ m/^\+(?!u?adns).*\w.*$/m || |
114 | $out =~ m/^\-(?!u?adns).*\w.*$/m)) { | |
8f100340 MW |
115 | print $&, "\n\n" or die $!; |
116 | } | |
117 | print $out or die $!; | |
118 | } | |
119 | ' | |
120 | FEND | |
121 | chmod +x $tmp/msg-filter | |
122 | ||
2a87cbc4 MW |
123 | git filter-branch --msg-filter $tmp/msg-filter \ |
124 | `git show-ref | awk '{print $2}'` | |
8f100340 | 125 | |
2a87cbc4 MW |
126 | git show-ref | awk '{print $2}' | grep '^refs/original/' \ |
127 | | xargs -n1 git update-ref -d | |
8f100340 MW |
128 | |
129 | rm -rf $tmp/converted | |
130 | mkdir $tmp/converted | |
131 | cd $tmp/converted | |
132 | git init | |
133 | git fetch -u $tmp/adjust 'refs/*:refs/*' | |
134 | git checkout master |