From: Arun Persaud Date: Sun, 4 Mar 2012 22:52:34 +0000 (-0800) Subject: added some documentation about what's need to be done for a release and a bash-releas... X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=e875cb670c1628841fac114efb31bec453b13eed added some documentation about what's need to be done for a release and a bash-release script --- diff --git a/doc-maint/coding-standards.org b/doc-maint/coding-standards.org new file mode 100644 index 0000000..b78d40b --- /dev/null +++ b/doc-maint/coding-standards.org @@ -0,0 +1,6 @@ +We try to follow + +http://www.gnu.org/prep/standards/standards.html#Formatting + +lots of code cleanup is needed though (2012-03-04) + diff --git a/doc-maint/gendocs.sh b/doc-maint/gendocs.sh new file mode 100755 index 0000000..a1ed4b4 --- /dev/null +++ b/doc-maint/gendocs.sh @@ -0,0 +1,361 @@ +#!/bin/sh +# gendocs.sh -- generate a GNU manual in many formats. This script is +# mentioned in maintain.texi. See the help message below for usage details. + +scriptversion=2009-04-08.09 + +# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, +# or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Original author: Mohit Agarwal. +# Send bug reports and any other correspondence to bug-texinfo@gnu.org. + +prog=`basename "$0"` +srcdir=`pwd` + +scripturl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs.sh" +templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/util/gendocs_template" + +: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} +: ${MAKEINFO="makeinfo"} +: ${TEXI2DVI="texi2dvi -t @finalout"} +: ${DVIPS="dvips"} +: ${DOCBOOK2HTML="docbook2html"} +: ${DOCBOOK2PDF="docbook2pdf"} +: ${DOCBOOK2PS="docbook2ps"} +: ${DOCBOOK2TXT="docbook2txt"} +: ${GENDOCS_TEMPLATE_DIR="."} +: ${TEXI2HTML="texi2html"} +unset CDPATH +unset use_texi2html + +version="gendocs.sh $scriptversion + +Copyright 2009 Free Software Foundation, Inc. +There is NO warranty. You may redistribute this software +under the terms of the GNU General Public License. +For more information about these matters, see the files named COPYING." + +usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE + +Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source. +See the GNU Maintainers document for a more extensive discussion: + http://www.gnu.org/prep/maintain_toc.html + +Options: + -o OUTDIR write files into OUTDIR, instead of manual/. + --email ADR use ADR as contact in generated web pages. + --docbook convert to DocBook too (xml, txt, html, pdf and ps). + --html ARG pass indicated ARG to makeinfo or texi2html for HTML targets. + --texi2html use texi2html to generate HTML targets. + --help display this help and exit successfully. + --version display version information and exit successfully. + +Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" + +Typical sequence: + cd PACKAGESOURCE/doc + wget \"$scripturl\" + wget \"$templateurl\" + $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" + +Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR +to override). Move all the new files into your web CVS tree, as +explained in the Web Pages node of maintain.texi. + +Please use the --email ADDRESS option to specify your bug-reporting +address in the generated HTML pages. + +MANUAL-TITLE is included as part of the HTML of the overall +manual/index.html file. It should include the name of the package being +documented. manual/index.html is created by substitution from the file +$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the +generic template for your own purposes.) + +If you have several manuals, you'll need to run this script several +times with different MANUAL values, specifying a different output +directory with -o each time. Then write (by hand) an overall index.html +with links to them all. + +If a manual's Texinfo sources are spread across several directories, +first copy or symlink all Texinfo sources into a single directory. +(Part of the script's work is to make a tar.gz of the sources.) + +You can set the environment variables MAKEINFO, TEXI2DVI, and DVIPS to +control the programs that get executed, and GENDOCS_TEMPLATE_DIR to +control where the gendocs_template file is looked for. (With --docbook, +the environment variables DOCBOOK2HTML, DOCBOOK2PDF, DOCBOOK2PS, and +DOCBOOK2TXT are also respected.) + +By default, makeinfo is run in the default (English) locale, since +that's the language of most Texinfo manuals. If you happen to have a +non-English manual and non-English web site, see the SETLANG setting +in the source. + +Email bug reports or enhancement requests to bug-texinfo@gnu.org. +" + +calcsize() +{ + size=`ls -ksl $1 | awk '{print $1}'` + echo $size +} + +MANUAL_TITLE= +PACKAGE= +EMAIL=webmasters@gnu.org # please override with --email +htmlarg= +outdir=manual + +while test $# -gt 0; do + case $1 in + --email) shift; EMAIL=$1;; + --help) echo "$usage"; exit 0;; + --version) echo "$version"; exit 0;; + -o) shift; outdir=$1;; + --docbook) docbook=yes;; + --html) shift; htmlarg=$1;; + --texi2html) use_texi2html=1;; + -*) + echo "$0: Unknown option \`$1'." >&2 + echo "$0: Try \`--help' for more information." >&2 + exit 1;; + *) + if test -z "$PACKAGE"; then + PACKAGE=$1 + elif test -z "$MANUAL_TITLE"; then + MANUAL_TITLE=$1 + else + echo "$0: extra non-option argument \`$1'." >&2 + exit 1 + fi;; + esac + shift +done + +if test -s "$srcdir/$PACKAGE.texinfo"; then + srcfile=$srcdir/$PACKAGE.texinfo +elif test -s "$srcdir/$PACKAGE.texi"; then + srcfile=$srcdir/$PACKAGE.texi +elif test -s "$srcdir/$PACKAGE.txi"; then + srcfile=$srcdir/$PACKAGE.txi +else + echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 + exit 1 +fi + +if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then + echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 + echo "$0: it is available from $templateurl." >&2 + exit 1 +fi + +case $outdir in + /*) dotdot_outdir="$outdir";; + *) dotdot_outdir="../$outdir";; +esac + +echo Generating output formats for $srcfile + +cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\"" +echo "Generating info files... ($cmd)" +eval "$cmd" +mkdir -p $outdir/ +tar czf $outdir/$PACKAGE.info.tar.gz $PACKAGE.info* +info_tgz_size=`calcsize $outdir/$PACKAGE.info.tar.gz` +# do not mv the info files, there's no point in having them available +# separately on the web. + +cmd="${TEXI2DVI} \"$srcfile\"" +echo "Generating dvi ... ($cmd)" +eval "$cmd" + +# now, before we compress dvi: +echo Generating postscript... +${DVIPS} $PACKAGE -o +gzip -f -9 $PACKAGE.ps +ps_gz_size=`calcsize $PACKAGE.ps.gz` +mv $PACKAGE.ps.gz $outdir/ + +# compress/finish dvi: +gzip -f -9 $PACKAGE.dvi +dvi_gz_size=`calcsize $PACKAGE.dvi.gz` +mv $PACKAGE.dvi.gz $outdir/ + +cmd="${TEXI2DVI} --pdf \"$srcfile\"" +echo "Generating pdf ... ($cmd)" +eval "$cmd" +pdf_size=`calcsize $PACKAGE.pdf` +mv $PACKAGE.pdf $outdir/ + +cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\"" +echo "Generating ASCII... ($cmd)" +eval "$cmd" +ascii_size=`calcsize $PACKAGE.txt` +gzip -f -9 -c $PACKAGE.txt >$outdir/$PACKAGE.txt.gz +ascii_gz_size=`calcsize $outdir/$PACKAGE.txt.gz` +mv $PACKAGE.txt $outdir/ + +html_split() +{ + opt="--split=$1 $htmlarg --node-files" + cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" + echo "Generating html by $1... ($cmd)" + eval "$cmd" + split_html_dir=$PACKAGE.html + ( + cd ${split_html_dir} || exit 1 + ln -sf ${PACKAGE}.html index.html + tar -czf $dotdot_outdir/${PACKAGE}.html_$1.tar.gz -- *.html + ) + eval html_$1_tgz_size=`calcsize $outdir/${PACKAGE}.html_$1.tar.gz` + rm -f $outdir/html_$1/*.html + mkdir -p $outdir/html_$1/ + mv ${split_html_dir}/*.html $outdir/html_$1/ + rmdir ${split_html_dir} +} + +if test -z "$use_texi2html"; then + opt="--no-split --html -o $PACKAGE.html $htmlarg" + cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" + echo "Generating monolithic html... ($cmd)" + rm -rf $PACKAGE.html # in case a directory is left over + eval "$cmd" + html_mono_size=`calcsize $PACKAGE.html` + gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz + html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz` + mv $PACKAGE.html $outdir/ + + cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\"" + echo "Generating html by node... ($cmd)" + eval "$cmd" + split_html_dir=$PACKAGE.html + ( + cd ${split_html_dir} || exit 1 + tar -czf $dotdot_outdir/${PACKAGE}.html_node.tar.gz -- *.html + ) + html_node_tgz_size=`calcsize $outdir/${PACKAGE}.html_node.tar.gz` + rm -f $outdir/html_node/*.html + mkdir -p $outdir/html_node/ + mv ${split_html_dir}/*.html $outdir/html_node/ + rmdir ${split_html_dir} +else + cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\"" + echo "Generating monolithic html... ($cmd)" + rm -rf $PACKAGE.html # in case a directory is left over + eval "$cmd" + html_mono_size=`calcsize $PACKAGE.html` + gzip -f -9 -c $PACKAGE.html >$outdir/$PACKAGE.html.gz + html_mono_gz_size=`calcsize $outdir/$PACKAGE.html.gz` + mv $PACKAGE.html $outdir/ + + html_split node + html_split chapter + html_split section +fi + +echo Making .tar.gz for sources... +srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null` +tar cvzfh $outdir/$PACKAGE.texi.tar.gz $srcfiles +texi_tgz_size=`calcsize $outdir/$PACKAGE.texi.tar.gz` + +if test -n "$docbook"; then + cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml" + echo "Generating docbook XML... $(cmd)" + eval "$cmd" + docbook_xml_size=`calcsize $PACKAGE-db.xml` + gzip -f -9 -c $PACKAGE-db.xml >$outdir/$PACKAGE-db.xml.gz + docbook_xml_gz_size=`calcsize $outdir/$PACKAGE-db.xml.gz` + mv $PACKAGE-db.xml $outdir/ + + cmd="${DOCBOOK2HTML} -o $split_html_db_dir ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook HTML... ($cmd)" + eval "$cmd" + split_html_db_dir=html_node_db + ( + cd ${split_html_db_dir} || exit 1 + tar -czf $dotdot_outdir/${PACKAGE}.html_node_db.tar.gz -- *.html + ) + html_node_db_tgz_size=`calcsize $outdir/${PACKAGE}.html_node_db.tar.gz` + rm -f $outdir/html_node_db/*.html + mkdir -p $outdir/html_node_db + mv ${split_html_db_dir}/*.html $outdir/html_node_db/ + rmdir ${split_html_db_dir} + + cmd="${DOCBOOK2TXT} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook ASCII... ($cmd)" + eval "$cmd" + docbook_ascii_size=`calcsize $PACKAGE-db.txt` + mv $PACKAGE-db.txt $outdir/ + + cmd="${DOCBOOK2PS} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook PS... $(cmd)" + eval "$cmd" + gzip -f -9 -c $PACKAGE-db.ps >$outdir/$PACKAGE-db.ps.gz + docbook_ps_gz_size=`calcsize $outdir/$PACKAGE-db.ps.gz` + mv $PACKAGE-db.ps $outdir/ + + cmd="${DOCBOOK2PDF} ${outdir}/$PACKAGE-db.xml" + echo "Generating docbook PDF... ($cmd)" + eval "$cmd" + docbook_pdf_size=`calcsize $PACKAGE-db.pdf` + mv $PACKAGE-db.pdf $outdir/ +fi + +echo "Writing index file..." +if test -z "$use_texi2html"; then + CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ + /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" +else + CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" +fi +curdate=`$SETLANG date '+%B %d, %Y'` +sed \ + -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ + -e "s!%%EMAIL%%!$EMAIL!g" \ + -e "s!%%PACKAGE%%!$PACKAGE!g" \ + -e "s!%%DATE%%!$curdate!g" \ + -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ + -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ + -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ + -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ + -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ + -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ + -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ + -e "s!%%PDF_SIZE%%!$pdf_size!g" \ + -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \ + -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ + -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ + -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ + -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ + -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ + -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \ + -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ + -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ + -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ + -e "s,%%SCRIPTURL%%,$scripturl,g" \ + -e "s!%%SCRIPTNAME%%!$prog!g" \ + -e "$CONDS" \ +$GENDOCS_TEMPLATE_DIR/gendocs_template >$outdir/index.html + +echo "Done, see $outdir/ subdirectory for new files." + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/doc-maint/make-xboard-release b/doc-maint/make-xboard-release new file mode 100644 index 0000000..c7acee6 --- /dev/null +++ b/doc-maint/make-xboard-release @@ -0,0 +1,186 @@ +#!/bin/bash + +# the script will check out the correct branch, run "make distcheck", +# tag git, and upload the files to the GNU server. + +# you need to have your GPG key registered with the GNU people for the upload to work! + +# the script includes some minimal error checking and tries to automate the following: +# * check if the commit is already tagged +# * if version number includes a date like 20120304 (to be exact *20??????), +# it will create a developer release otherwise a normal release +# * if you have local tags that you don't want to upload, you need to add them further down to git tag -d ... + +# you need to set the following to reasonable value for the script to work + +# the script at the moment also only works for master and branches called v4*, easy to change in the script though +GITDIR=/home/arun/src/Prog/xboard +UPLOADDIR=/home/arun/tmp/xboard-upload +GPGKEYID="F51BC536" + +# default: make a release from master +BRANCH="master" + +function usage () { + echo >&2 "usage: $0 [-b branch]" + } + +# check if we want to make a release from another branch +while getopts b: opt +do + case "$opt" in + b) BRANCH="$OPTARG";; + \?) # unknown flag + usage + exit 1;; + esac +done +shift `expr $OPTIND - 1` + +if [ $# -gt 0 ] ; then + usage + exit 1 +fi + +# output information to the user and ask for confirmation +echo " Tagging and uploading new xboard release to GNU" +echo " branch: $BRANCH" +echo "" + +# go into a tmp directory, clone xboard, check out branch + +cd $GITDIR + +TEX=tex + +git checkout $BRANCH + +read -n 1 -p "Should be on correct branch now. Continue?" REPLY + +# get version information + +VERSION=`grep AC_INIT configure.ac | sed -e 's/^.*\[.*\],\[\(.*\)\],.*$/\1/' ` + +#make sure we don't do things too often +RESULT=`git tag | grep "^$VERSION\$"` +if [ "$RESULT" != "" ] ; then + echo "this version is already tagged... exiting." + exit 1 +fi + +################# + +# output some summary information and have user confirm it + +if [[ $BRANCH == v4* ]] ; then + TAGNAME=v$VERSION +else + TAGNAME=$VERSION +fi + +FTPSERVER="ftp-upload.gnu.org" +if [[ $VERSION == *20?????? ]] ; then + TAGMESSAGE="new developer release" + FTPDIR="incoming/alpha" +else + TAGMESSAGE="new release of version $VERSION" + FTPDIR="incoming/ftp" +fi + +# ask for confirmation from user +echo " make sure that you are on the right commit (should be the one that changes the version number)!" +echo " version will be tagged as: $TAGNAME" +echo " tar ball will be named: xboard-${VERSION}.tar.gz " +echo " tag message: $TAGMESSAGE" +echo "" +read -n 1 -p "Continue (y/N)?" REPLY +echo "" + +if [ "x$REPLY" != "xy" ]; then + echo " exiting now!" + exit 2 +fi + +echo "cleaning up tags" +# git tag -d <add tag name here, for more than one, add more lines like this one> + + +echo "tagging commit" +git tag -u $GPGKEYID -m "$TAGMESSAGE" $TAGNAME + +echo "create tar ball" +./autogen.sh +./configure +TEX=tex make distcheck + +if [ -s xboard-${VERSION}.tar.gz ] ; then + echo "" + echo " make distcheck seems to be ok" + echo "" +else + echo "" + echo " problem with make distcheck" + echo "" + exit 3 +fi + +echo "move tar ball to upload directory" +mv xboard-${VERSION}.tar.gz $UPLOADDIR + +echo "cd into upload directory" +cd $UPLOADDIR + +# create files necessary for upload to GNU +echo "creating directive" +echo "version: 1.1 +directory: xboard +filename: xboard-${VERSION}.tar.gz +comment: $TAGMESSAGE " > xboard-${VERSION}.tar.gz.directive + +echo "signing packages" +gpg -b xboard-${VERSION}.tar.gz +gpg --clearsign xboard-${VERSION}.tar.gz.directive + +echo "uploading..." + +echo " +The files can be found in $UPLOADDIR. Go and test them :) + +Will do the following in a second followed by a git push + +ftp -n -v $FTPSERVER <<EOT +user anonymous +cd $FTPDIR +put xboard-${VERSION}.tar.gz +put xboard-${VERSION}.tar.gz.sig +put xboard-${VERSION}.tar.gz.directive.asc +EOT +" + +read -n 1 -p "Will upload and push tags now. Continue? (y/N)" REPLY + +if [ "x$REPLY" != "xy" ]; then + echo " exiting now!" + exit 3 +fi + +# upload to GNU +ftp -n -v $FTPSERVER <<EOT +user anonymous +cd $FTPDIR +put xboard-${VERSION}.tar.gz +put xboard-${VERSION}.tar.gz.sig +put xboard-${VERSION}.tar.gz.directive.asc +EOT + +# push tags +cd $GITDIR +echo "pushing tags and commits" +git push +git push --tags + +#possible to add other git repos here too +#git push github +#git push --tags github + +echo "done...have a nice day!" diff --git a/doc-maint/release.org b/doc-maint/release.org new file mode 100644 index 0000000..f1d25c5 --- /dev/null +++ b/doc-maint/release.org @@ -0,0 +1,71 @@ +* Release documentation +** Pre-release checklist + - update AUTHORS, NEWS, check other files + - update version in configure.ac and other places + - run "make distcheck" and then create tar-ball via "make dist" + - unpack tar-ball, check that it builds OK + - tag with signature + - check openSUSE build + - update git@savannah, github + - update po/pot files via "cd po; make update-po". This should happen + after the version number has been updated, so that the po-files + automatically get the correct version number. + - send pot-file to translationproject + +** Release + +See script make-xboard-release that can handle GNU-upload and tagging in git. + +- update webpage, manuals +- upload on gnu +- update enginge-intf.html +- create savannah news item +- email lists; add short discription of xboard to news item + 1) email gnu (check admin page for gnu) http://www.gnu.org/prep/maintain/html_node/Announcements.html#Announcements + 2) email chess servers (ICS, FICS) and other web directories + 3) email linux distributions/update opensuse (Arun can handle OpenSUSE) + 4) email info-gnu-chess +- update freshmeat.net (Tim can do this, email him) +- newsgroups add short discription of xboard to news item + 1) gnu.chess, info-gnu-chess + 2) rec.games.chess.computer + 3) comp.os.linux.announce + 4) WinBoard forum web page (HGM does this one) +- update git to the next pre-release + +** Template for emails + +fill in the <...> + +Subject: release of XBoard version <...> + +Hello, + +A new version of XBoard is available. Here are some details: + +Short description: + +XBoard is a graphical user interface for chess in all its major forms, +including international chess, xiangqi (Chinese chess), shogi Japanese chess) +and Makruk. Many variations of chess are also supported. + +Web page: + +http://www.gnu.org/software/xboard/ + +Download at: + +http://ftp.gnu.org/gnu/xboard/ + +Windows binaries will be available at: + +http://www.open-aurec.com/wbforum/viewforum.php?f=19 + +Development at: + +https://savannah.gnu.org/projects/xboard/ + +News: + +<list of most important new features> +See the NEWS file in the distribution or git for more details. diff --git a/doc-maint/web-pages.org b/doc-maint/web-pages.org new file mode 100644 index 0000000..cc71f14 --- /dev/null +++ b/doc-maint/web-pages.org @@ -0,0 +1,40 @@ +The home page for XBoard are kept in CVS. This is a unfortunate, since +we keep the code in git and hopefully will change in the +future. Luckily there is a cvsexport/import command for git that can help. + +Possible setup: + +cvs web page in /home/user/xboard-cvs +git in /home/user/xboard-git + +Add the following entries in /home/user/xboard-git/.git/config: + +[cvsimport] + module = xboard + d = :ext:<savannah user name>@cvs.sv.gnu.org:/webcvs/xboard +[cvsexportcommit] + cvsdir = /home/user/xboard-cvs + +It's probably best to have a tracking branch for the cvs tree, one +that branch you should be able to use: + +git cvsimport -a + +to import all cvs-commits into the git tree. You can merge that branch +with the www-branch in git. + +To push a git-commit (from branch www) into cvs, you can use: + +git cvsexportcommit -v -c <sha1> + +This can only be done one commit at a time AFAIK. In case of conflicts +cvsexportcommit will leave a .msg and patchfile (something like +.cvscommitpatch) in the CVS directory that you can apply by hand and +then fix the merge conflicts and apply the commit by hand via "cvs +commit" (use "cvs add <file>" if you need to add new files). + +GNU also provides a script to update the online manual from the texi +file. It's called gendocs.sh (see same directory as this file). There +might be newer version around, so it could be worth checking for them +every now and then. +