maint: automate the web-doc updating procedure
authorJim Meyering <meyering@redhat.com>
Mon, 21 Sep 2009 06:56:17 +0000 (08:56 +0200)
committerJim Meyering <meyering@redhat.com>
Mon, 21 Sep 2009 06:56:17 +0000 (08:56 +0200)
* gnu-web-doc-update: New script, destined for gnulib.
* README-release: Refer to the new script.

README-release
gnu-web-doc-update [new file with mode: 0755]

index 8dcab97..d20a911 100644 (file)
@@ -81,17 +81,8 @@ Once all the builds and tests have passed,
   Then go here to approve it:
     https://savannah.gnu.org/news/approve.php?group=coreutils
 
-* For non-alpha releases, update the on-line manual at
+* After each non-alpha release, update the on-line manual accessible via
 
     http://www.gnu.org/software/coreutils/manual/
 
-  Run `make web-manual', then copy the contents of doc/manual
-  into a CVS checkout of the coreutils manual repository.
-  Also edit coreutils.html (FIXME? why?) before doing a CVS commit.
-
-    CVS_RSH=ssh \
-    cvs -d:ext:$USER@cvs.savannah.gnu.org:/web/coreutils co coreutils
-
-  Be sure to "cvs add -ko" any files that "cvs status" marks with "?".
-  That is necessary whenever a new texinfo node is added.  Each becomes
-  a new file in html_node that must then be "cvs add"ed.
+  by running the gnu-web-doc-update script.
diff --git a/gnu-web-doc-update b/gnu-web-doc-update
new file mode 100755 (executable)
index 0000000..41e989a
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Run this after each non-alpha release, to update the web documentation at
+# http://www.gnu.org/software/$pkg/manual/
+# Requirements: everything required to bootstrap your package,
+# plus these: git, cvs, cvsu, rsync, mktemp
+
+version=$(cat .prev-version)
+pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' Makefile)
+tmp_branch=web-doc-$version-$$
+
+cleanup()
+{
+  __st=$?;
+  rm -rf "$tmp"
+  git checkout master
+  git branch -d $tmp_branch
+  exit $__st
+}
+trap cleanup 0
+trap 'exit $?' 1 2 13 15
+
+# We must build using sources for which --version reports the
+# just-released version number, not some string like 7.6.18-20761.
+# That version string propagates into all documentation.
+git checkout -b $tmp_branch v$version
+./bootstrap && ./configure && make && make web-manual
+
+tmp=$(mktemp -d --tmpdir=. web-doc-update.XXXXXX) || exit 1
+( cd $tmp \
+    && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg )
+rsync -avP doc/manual/ $tmp/$pkg/manual
+
+(
+  cd $tmp/$pkg/manual
+
+  # Add any new files:
+  cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko
+
+  cvs ci -m $version
+)