diff --git a/getchangelog.pl b/getchangelog.pl
deleted file mode 100755
index 5619ce4..0000000
--- a/getchangelog.pl
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-
-my $rev = undef;
-if ($#ARGV >= 0) {
-	$rev = shift @ARGV;
-} else {
-	open(REV, "git svn log REVISION|") || die;
-	while (<REV>) {
-		next unless (m/^(r[0-9]+)/);
-		#top revision is WD, skip it
-		if (not defined $rev) {
-			$rev = $1;
-			next;
-		} else {
-			$rev = $1;
-			last;
-		}
-	}
-}
-
-die unless $rev =~ m/^r([0-9]+)$/;
-$rev = $1;
-
-sub escapelatex {
-	my $s = shift;
-	$s =~ s/[\\]/\\textbackslash /go;
-	$s =~ s/([&#%{}\$])/\\$1/go;
-	$s =~ s/[~]/\\~{}/go;
-	$s =~ s/(https?:\S*)/\\url{$1}/go;
-#1st line always on a separate paragraph
-	$s =~ s/\n/\n\n/o;
-#Guess where new paragraph starts
-	$s =~ s/\\.\n/.\n\n/go;
-	$s =~ s/\n-/\n\n-/go;
-	return $s;
-}
-
-#map editors to authors
-my %editors = {};
-$editors{'rusty'} = 'Rusty Russell <rusty@au1.ibm.com>';
-$editors{'hornet'} = 'Pawel Moll <pawel.moll@arm.com>';
-$editors{'cornelia.huck'} = 'Cornelia Huck <cornelia.huck@de.ibm.com>';
-$editors{'mstsirkin'} = 'Michael S. Tsirkin <mst@redhat.com>';
-
-my $cl = "";
-my $signoff = undef;
-my $editor = undef;
-my $date = undef;
-my $r = undef;
-open(LOG, "git svn log *tex|") || die;
-my $line = undef;
-while (<LOG>) {
-	if (m/^------------------------------------------------------------------------$/) {
-		next if ($cl eq "");
-		# act on it
-		my $author;
-		if (defined $signoff) {
-			$author = $signoff;
-		} else {
-			$author = $editors{$editor};
-		}
-		#strip mail info
-		$author =~ s/\s*<.*//;
-		$cl = escapelatex($cl);
-		print "$r & $date & $author & { $cl } \\\\\n";
-		print "\\hline\n";
-
-		$cl = "";
-		$signoff = undef;
-		$editor = undef;
-		$date = undef;
-		$r = undef;
-
-		$line = 0;
-		next;
-	}
-	$line++;
-#r164 | mstsirkin | 2013-12-08 14:30:55 +0200 (Sun, 08 Dec 2013)| 6 lines
-
-	if ($line eq 1) {
-		die unless (m/^r[0-9]/);
-		my @rinfo = split(/\s*\Q|\E\s*/, $_);
-		$r = $rinfo[0];
-
-		die unless $r =~ m/^r([0-9]+)$/;
-		$r = $1;
-		last if ($r <= $rev);
-
-		$editor = $rinfo[1];
-		$date = $rinfo[2];
-		die unless ($date =~ m/^[^(]*\([^,]*,\s*([^)]+)\)\s*$/);
-		$date = $1;
-		next;
-	}
-	next if (m/^$/);
-
-	# First signature is the author: needed?
-	# ignore for now
-	#if (not defined $signoff and m/^Signed-off-by:\s*(.*)/) {
-	#	$signoff = $1;
-	#}
-	# skip signatures
-	next if (m/^\s*[A-Z][A-Za-z-]*-by:/);
-
-
-	# fix bug: wrong date in some commit logs
-	if (/Change accepted on VIRTIO TC Meeting, 3 December 2013/) {
-		$_ = "Change accepted on Virtio TC Meeting Minutes: Feb 25, 2014\n";
-	}
-
-	$cl .= $_;
-}
diff --git a/git-svn.txt b/git-svn.txt
deleted file mode 100644
index e094217..0000000
--- a/git-svn.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Using git svn with virtio svn repository:
-
-Initial clone (fetches all branches, takes a very long time):
-        git svn clone -s https://tools.oasis-open.org/version-control/svn/virtio
-Pull:
-        git svn rebase
-Push:
-        git svn dcommit
-
-Tagging 1.0 cs02 to match the released specification:
-        git branch -t v1.0-cs02
-
-Updating the trunk with all changes made on 1.0 branch:
-
-	git config --global svn.pushmergeinfo true
-	git checkout -b master origin/trunk
-	git svn fetch
-	git svn rebase -l
-	git merge --no-ff origin/v1.0
-		[ resolve merge conflicts ]
-	git svn dcommit
-
-Faster initial clone from git mirror (example using mst's mirror at kernel.org):
-
-	git clone git://git.kernel.org/pub/scm/virt/kvm/mst/virtio-text.git
-	cd virtio-text
-	git config --remove-section remote.origin
-	git svn init -s https://tools.oasis-open.org/version-control/svn/virtio
-	git svn rebase
-	git checkout -b trunk origin/trunk
-
-Updating a git mirror from git-svn repository (after setting up a
-remote named "mirror"):
-	git push mirror --prune +refs/remotes/origin/*:refs/heads/*
diff --git a/makezip.sh b/makezip.sh
index 3c94f8e..806fa52 100755
--- a/makezip.sh
+++ b/makezip.sh
@@ -3,15 +3,8 @@
 rm -f $SPECDOC.zip
 if test -d .git; then
 	git archive --format=zip --prefix=tex/ -o $SPECDOC.zip HEAD
-elif test -d .svn; then
-	rm -fr export-from-svn
-	mkdir -p export-from-svn
-	svn export . export-from-svn/tex
-	cd export-from-svn/
-	zip ../$SPECDOC.zip tex/
-	cd ..
 else
-	echo Neither .git nor .svn found.
+	echo .git not found.
 	echo Falling back to generated list.
 fi
 zip -d $SPECDOC.zip tex/.gitattributes
