$ svn co --username anonsvn https://smlnj-gforge.cs.uchicago.edu/svn/smlnj/admin adminIf prompted, use "anonsvn" for the password. Following this step, you should be able to use admin/checkout-all.sh to get the remaining source trees without trouble (see below). More information about the repository can be found at the SML/NJ GForge SCM page.
Suppose we have added the following shell definitions to our environment:
gf=https://smlnj-gforge.cs.uchicago.edu/svn smlnj=$gf/smlnj
By default, a tree T is obtained by performing
svn co $smlnj/T/trunk TThere currently are two exceptions to this:
svn co $smlnj/sml/trunk base svn co $gf/ml-lpt/trunk ml-lpt
svn co $smlnj/admin adminand put the name of the resulting admin directory (which could be located anywhere) into your shell's PATH.
checkout-all.sh rootThis creates the root directory and populates it as described above. Without the optional argument, checkout-all.sh does not create a new root directory and treats the current directory "." as the root instead.
If some subtrees already exist, then checkout-all.sh will skip them. This is useful when working on a custom version of one or more of the subtrees while using default versions of the remaining subtrees. To establish such a setup, first create the root directory by hand, create your custom subtrees in whatever fashion desirable, and then run checkout-all.sh to pull in any remaining subtrees from the repository.
The checkout-all.sh script takes an optional flag --export (or simply -e). The use of this flag switches from svn checkout to svn export. This is useful for obtaining a copy of the sources without Subversion meta data.
refresh-all.shfrom within root. This command skips subtrees that are not under Subversion control. Like checkout-all.sh it takes the root directory as an optional argument, the default being the current directory.
Commits should be done on a per-tree basis "by hand" (i.e., using svn commit and its cousins).
SMLDEV
(e.g. in my case,
SMLDEV=~/sml/Dev
).
$ export gf=https://smlnj-gforge.cs.uchicago.edu/svn $ export smlnj=$gf/smlnj
$SMLDEV
directory, create a directory gf
$ cd $SMLDEV $ mkdir gf
$ cd gf $ svn co $smlnj/adminThis creates subdirectory gf/admin containing some shell scripts to automate checking out the full source code, checking status, etc.
Of course, you could put this checkout somewhere else, such in your personal bin file, or in /usr/local/bin if you have permission. In this case, step 4 would not be necessary.
$ checkout-all.sh smlnj
$ cd smlnj $ config/install.sh
PATH
,
then this may fail because of the order in which svn checks out
certain ml-yacc source files. In this case, you can recover by
executing
$ touch ml-yacc/src/yacc.grm.sig ml-yacc/src/yacc.grm.smlto make these younger than ml-yacc/src/yacc.grm. This is a temporary problem until the build scripts are modified to take care of this.
In this example, the branch is named primop-branch-3
, and is based
on the top-level repository directory $smlnj/sml
.
sml
(= base
), do
$ svn list $smlnj/sml/branches/
$ mkdir primop3 $ cd primop3
$ svn co https://smlnj-gforge.cs.uchicago.edu/svn/smlnj/sml/branches/primop-branch-3 baseor (given the definition of shell variable
smlnj
from part I above)
$ svn co $smlnj/sml/branches/primop-branch-3 baseThis checks out the primop-branch-3 code for the sml directory, locally renamed as "base".
$ checkout-all.sh