From time to time, we may add new directories.  In that case, steps
described below will explain how to reduce output from the command:

  "svn status -u ."

There are actually two ways to do this.  In most cases, it will be
simplest simply to execute the following in the new directory,
replacing "unversioned-files.txt" by a path to unversioned-files.txt
in the top-level directory.

  svn propset -R svn:ignore -F unversioned-files.txt .

Otherwise, first execute the following in the top-level directory:

  svn propset -R svn:ignore -F unversioned-files.txt .

Then in each subdirectory with a file unversioned-files-extra.txt,
e.g. as determined by

  find . -name unversioned-files-extra.txt -print

execute the following command (replacing /projects/acl2/devel/books/
if not at UT CS):

  (cat /projects/acl2/devel/books/unversioned-files.txt unversioned-files-extra.txt > tmp) ; \
  (svn propset svn:ignore -F tmp .) ; \
  (rm tmp)

Here is an example of a file "tmp" I created in
/projects/acl2/devel/books/, so that I could just execute ./tmp in
that directory.

#!/lusr/bin/bash

for dir in \
xdoc \
clause-processors/SULFA/c-files \
clause-processors/SULFA/scripts \
clause-processors/SULFA/books/sat-tests \
clause-processors/SULFA/books/sat \
cutil \
bdd \
workshops/2003/kaufmann/support/input \
workshops/2003/kaufmann/support/rtl \
workshops/2003/greve-wilding-vanfleet/support \
workshops/2004/sumners-ray/support \
workshops/1999/multiplier \
centaur \
serialize ; \
do \
pushd $dir ; \
(cat /projects/acl2/devel/books/unversioned-files.txt unversioned-files-extra.txt > tmp) ; \
(svn propset svn:ignore -F tmp .) ; \
(rm tmp) ;
popd ;
done

.....

For the record, here is what was done for the commit creating svn
revision 598.

(a) Added file ./unversioned-files.txt, which simply records the
output of:

  svn propget svn:ignore

(Presumably previous work had been done to set the svn:ignore
property, but now we have the values recorded in
unversioned-files.txt.)

(b) Added files unversioned-files-extra.txt in a few directories, to
specify additional files to ignore, typically ones removed by
extensions of "make clean"in a given directory.

(c) For each such file unversioned-files-extra.txt, executed the above
command starting with "(cat ../unversioned-files.txt", but as above,
replacing "../" with an appropriate number of repetitions of that
sequence of three characters, to obtain a reference to file
unversioned-files.txt in the top-level directory.

============================================================

For an ACL2 release:

The following is probably only of use to ACL2 developers, but maybe
some of it will be useful to others.

How to make a release branch, as per Sol, 1/6/2011 (edited by Matt
K. from Sol's email, mostly to add -m arguments).

To create a branch from the trunk:

svn copy -m 'Make initial release branch for Version 6.3.' \
        https://acl2-books.googlecode.com/svn/trunk \
        https://acl2-books.googlecode.com/svn/branches/6.3

To create a tag is the same operation (note from Matt K.: Not sure we
ever need to create a tag); the only difference is the convention that
directories under branches are to be considered branches and
directories under tags are treated as write-once "markers" for a
certain revision.

svn copy -m 'Release branch corresponding to actual ACL2 6.3 release.' \
        https://acl2-books.googlecode.com/svn/branches/6.3 \
        https://acl2-books.googlecode.com/svn/tags/6.3

If ever you want to make a branch/tag from a specific revision (i.e.
not the latest), you can do something like (note the @660):

svn copy  -m 'Release branch corresponding to actual ACL2 6.3 release.' \
        https://acl2-books.googlecode.com/svn/branches/6.3@660 \
        https://acl2-books.googlecode.com/svn/tags/6.3


For an ACL2 developer, the next step is to remember the current
version number for the books -- below, we assume it is 663.

cd /projects/acl2/devel/books/
svn switch https://acl2-books.googlecode.com/svn/branches/6.3

Now switch back to the trunk AFTER the release is complete,
substituting "663" below by the number saved above (where "663" is
mentioned):

cd /projects/acl2/devel/books/
# While still in 6.3:
svn commit -m "Updates made for release committed to 6.3 branch"
# Now switch over to trunk
svn switch https://acl2-books.googlecode.com/svn/trunk
svn update
svn merge -r 663:HEAD https://acl2-books.googlecode.com/svn/branches/6.3 .
svn commit -m "Updates made for release committed to trunk"

Then resolve any conflicts.

The "svn switch" command acts a lot like "svn update."  Basically it
computes the diff between the revision on which the working copy is
based and the specified branch/revision, and applies that diff to the
working copy.  So it tries to preserves your edits to the working
copy, and notifies you of conflicts where it can't.

Note to ACL2 developers: During the release process, while the books/
subdirectory is a branch instead of the trunk, be sure to use
--ignore-externals when doing svn stuff in the ACL2 sources
development directory.  Details: The ACL2 sources repository contains
an "svn:externals" property that links the acl2/books subdirectory to
the trunk of the acl2-books repository.  Unfortunately, this means
that if you do an "svn switch" within books/ from trunk to a branch,
then do an "svn update" in the acl2 sources directory, it will try and
switch your books back from the branch to the trunk.  To avoid this,
use "svn update --ignore-externals" instead.

[Instructions already covered above, but left here in case they're
helpful sometime:

  Finally, when you want to merge some changes from one branch into
  another (say, from the release branch back into the trunk), first get
  a working copy of the trunk.  (You can check one out fresh or "svn
  switch" one from the branch back to the trunk.)  Then, from that
  working copy directory, run the following command, with appropriately
  chosen revision numbers:

  svn merge -r 663:HEAD https://acl2-books.googlecode.com/svn/branches/6.3 .

  This takes the diff between revisions 663 and HEAD of the 6.3 branch
  and applies it to your current working copy (no change is committed to
  the repository yet.)  Again, it will notify you of conflicts if it
  encounters any.  Note to ACL2 developers: Resolve those, if any, and
  then commit (to the trunk) whether there were conflicts or not.

]

Note that if desired, you can check out a working copy of the branch
in the usual way:

svn checkout https://acl2-books.googlecode.com/svn/branches/6.3 my-new-books-dir

============================================================
