chiark / gitweb /
Documentation and webpage updates
[adns.git] / convert
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`
46         local oldparents=`git log -n1 --pretty=format:%P $mergecommit`
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
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
84  else
85         git tag -f actual
86  fi)
87
88 git checkout master
89 git fetch $base/script actual
90 git merge -m 'CVS to git conversion
91
92 Record the scripts etc. we used (and their history) for posterity,
93 by binding them into the history.' FETCH_HEAD
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 {
102                 if ($out =~ /\*\*\* empty log message/) {
103                         ($out = `git diff $ENV{GIT_COMMIT}^ $ENV{GIT_COMMIT} -- changelog`)
104                            =~ s/\A.*\n\@\@ /\@\@ /s;
105                 }
106                 if ($out !~ /\n.*\n/) {
107                         $out = `fmt <<'\''EOF'\''
108 $out
109 EOF
110 `;
111                 }
112                 if ($out =~ m/^\@\@/s &&
113                     ($out =~ m/^\+(?!u?adns).*\w.*$/m ||
114                      $out =~ m/^\-(?!u?adns).*\w.*$/m)) {
115                         print $&, "\n\n" or die $!;
116                 }
117                 print $out or die $!;
118         }
119 '
120 FEND
121 chmod +x $tmp/msg-filter
122
123 git filter-branch --msg-filter $tmp/msg-filter \
124         `git show-ref | awk '{print $2}'`
125
126 git show-ref | awk '{print $2}' | grep '^refs/original/' \
127         | xargs -n1 git update-ref -d
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