|
From: <es...@th...> - 2017-10-15 19:01:02
|
I can now produce a git version of the GNUPLOT repository with the
following properties:
(1) Content correctness, as previously discussed.
(2) All committer fields are full DVCS-style IDs.
(3) Over 3100 other authorship attributions are recovered from
ChangeLog files.
(3) The faq module contents is merged in.
(4) Three very early releases that servived only as tarballs are
glued to the tail of the repository.
(5) An annotated tag marks the comversion point.
I think this is basically done, unless Ethan wants me to glue more
tarballs to its tail. It looks pretty good in gitk.
I'm appending the current version of my conversion script.
Stakeholders should read it carefully to check my assumptions.
#!/bin/sh
#
# Convert the gnuplot CVS repository. Results go in gnuplot
#
# Requires the repository head version of reposurgeon.
# The following archaic release tarballs must also be present:
# gnuplot-1.10A.tar.gz
# gnuplot-2.0.tar.gz
# gnuplot-3.5.tar.gz
#
echo "Clear the decks: `date`"
rm -fr gnuplot gnuplot-cvs faq-cvs faq-cvs-git
echo "Resync the local repo copies: `date`"
cvssync gnuplot.cvs.sourceforge.net:/cvsroot/gnuplot gnuplot
mv gnuplot gnuplot-cvs
mkdir gnuplot-cvs/CVSROOT
cvssync gnuplot.cvs.sourceforge.net:/cvsroot/gnuplot faq
mv faq faq-cvs
cat >gnuplot.map <<EOF
amai = Alexander Mai <st0...@hr...> Europe/Berlin
broeker = Hans-Bernhard Broeker <br...@us...> Europe/Berlin
cgaylord = Clark Gaylord <cga...@vt...> US/Eastern
janert = Philipp K. Janert <ja...@ie...> US/Pacific
joze = Johannes Zellner <joh...@ze...>
juhaszp = Peter Juhasz <ju...@us...>
hecking = Lars Hecking <lhe...@nm...> Europe/Dublin
lhecking = Lars Hecking <lhe...@nm...> Europe/Dublin
lodewyck = Jérôme Lodewyck <lod...@us...>
markisch = Bastian Maerkisch <bma...@we...> Europe/Berlin
mikulik = Petr Mikulik <mi...@ph...> Europe/Prague
persquare = Per Persson <per...@ma...>
sfeam = Ethan A Merritt <merritt@u.washington.edu> US/Pacific
tlecomte = Timothee Lecomte <tim...@en...> Europe/Paris
vanzandt = James R. Van Zandt <jr...@va...>
#vanzandt = James R. Van Zandt <jr...@de...>
uid26705 = Petr Mikulik <mi...@ph...> Europe/Prague
uid93776 = Ethan A Merritt <merritt@u.washington.edu> US/Pacific
EOF
echo "Build a git repo with remapped committer IDs: `date`"
# gnuplot 1.1.0A "Thu May 18 21:57:24 MST 1989" (UTC-7)
# gnuplot 2.0.0 "Wed Mar 7 22:18:59 EST 1990" (UTC-5)
# gnuplot 3.5 "Fri Aug 27 05:21:33 GMT 1993"
reposurgeon <<EOF
echo 1
prefer cvs
read gnuplot-cvs
authors read <gnuplot.map
prefer git
@min(=C) incorporate gnuplot-3.5.tar.gz
@min(=C) setfield commitdate 1993-08-27T05:21:33Z
@min(=C) incorporate gnuplot-2.0.tar.gz
@min(=C) setfield commitdate 1990-03-09T03:18:59Z
@min(=C) incorporate gnuplot-1.10A.tar.gz
@min(=C) setfield commitdate 1989-06-19T04:57:24Z
rebuild gnuplot
EOF
echo "Check in the FAQ and Makefile, then make a transition commit: `date`"
# Not worth trying to do more than this because the history of the FAQ
# doesn't seem to be recoverable due to Yet Another Wacky CVS Problem
cvsconvert faq-cvs
cd gnuplot
mkdir faq
cp ../faq-cvs-git/faq.tex faq
cp ../faq-cvs-git/Makefile faq
git add -f faq/faq.tex faq/Makefile
git commit -F - <<EOF
Check in faq.tex and Makefile from the old CVS faq module, in directory faq.
EOF
git tag -a -F - git-conversion <<EOF
Conversion to git.
Performed on `date --rfc-3339=date` by Eric S. Raymond <es...@th...>
using cvs-fast-export and reposurgeon.
EOF
cd ..
rm gnuplot.map
echo "Done: `date`"
--
<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
"Government is not reason, it is not eloquence, it is force; like fire, a
troublesome servant and a fearful master. Never for a moment should it be left
to irresponsible action."
-- George Washington, in a speech of January 7, 1790
|