SML/NJ SVN Howto公司

存储库布局

该存储库包含许多半独立的顶层树:……等等。

匿名存储库访问

下面的许多说明都假设您可以访问子版本存储库。如果您在访问方面遇到问题,可以使用用户名“anonsvn”和密码“anonsvn”。例如,要查看管理员树,您将执行以下操作:
$svn co--用户名anonsvnhttps://smlnj-gforge.cs.uchicago.edu/svn/smlnj/admin网站管理员
如果出现提示,请使用“anonsvn”作为密码。按照此步骤,您应该能够使用admin/checkout-all.sh(管理员/签出-所有.sh)以获得剩余的源树没有问题(见下文)。有关的更多信息存储库可以在SML/新泽西GForge SCM页面.

对存储库的Web访问

您还可以使用视图VCSML/NJ第页。

目录布局

要编译和安装SML/NJ,需要创建根目录(对于任意名称,我们将其称为“root”解释),然后通过检查用各种子树填充它此存储库的外部部分(可能还有其他存储库)。默认布局使用以下内容填充根:并非所有这些树都是必需的。

假设我们已经将以下shell定义添加到我们的环境:

玻璃纤维=网址:https://smlnj-gforge.cs.uchicago.edu/svnsmlnj=$gf/smlnj

默认情况下,树T型通过执行以下操作获得

svn公司$smlnj/T/trunk T
目前有两种例外情况:
svn公司$smlnj/sml/trunk basesvn公司$gf/ml-lpt/trunk ml-lpt

脚本

我们提供了少量shell脚本来简化创建和维护默认布局(或自定义布局默认值的变化)。这些脚本保存在Subversion下控制自己(在$gf/管理员). 要使用它们,请执行以下操作:
svn co$smlnj/admin管理员
并输入生成的管理目录的名称(可以是位于任何位置)进入外壳路径.
签出所有.sh
要创建默认布局,请使用
签出所有.sh根
这将创建根目录并按说明填充它以上。如果没有可选参数,签出所有.sh不创建新的根目录并处理当前目录".“作为根。

如果某些子树已经存在,则签出所有.sh跳过它们。这在使用一个或的自定义版本时很有用更多子树,同时使用其余的默认版本子树。要建立这样的设置,首先创建根目录手动创建自定义子树,然后运行签出所有.sh把剩下的都拉进去存储库中的子树。

这个全部结账.sh脚本采用可选的旗帜--出口(或者简单地说-e(电子)). 此标志的使用开关来自svn校验svn导出。这是用于获取没有Subversion元的源的副本数据。

刷新所有.sh
要执行svn更新在所有子树上运行
刷新所有.sh
从根目录内。此命令跳过不在下的子树颠覆控制。喜欢签出所有.sh它会生根发芽directory作为可选参数,默认值为当前目录。
统计所有.sh
同样,要执行svn统计在所有子树上,使用统计所有.sh和另外两个一样命令,统计所有.sh将根目录作为可选目录参数。

应在每树的基础上“手动”提交(即。,使用svn提交及其表亲)。

收件人

以下是执行典型任务的更详细回报。

一、准备

假设本地smlnj开发目录的路径是shell变量的值SMLDEV公司(例如,在我的情况下,SMLDEV=~/sml/开发).
  1. 定义一些shell变量
    $出口gf=https://smlnj-gforge.cs.uchicago.edu/svn$export smlnj=$gf/smlnj
  2. 在您的$斯莫尔德夫目录,创建目录gf
    $cd$SMLDEV$mkdir增长
  3. 转到gf并签出管理目录
    $cd gf$svn公司$smlnj/admin
    这将创建包含一些shell的子目录gf/admin自动签出完整源代码的脚本,检查状态等。

  4. 将$SMLDEV/gf/admin添加到shell路径中。

当然,你可以把这个结帐台放在其他地方,比如你的个人bin文件,或者在/usr/local/bin中(如果您有权限)。在这种情况下,步骤4是不必要的。

二、。签出主干smlnj代码的工作副本并构建编译器

  1. 假设您在开发目录中,请创建一个目录并签出所需的顶级子目录。这个通过为checkout-all.sh指定目录名,可以一步完成作为一个论点,例如:
    $checkout-all.sh smlnj
  2. 切换到新的工作目录并运行安装脚本:
    $cd smlnj(美元)$config/install.sh
  3. 如果您的路径,那么这可能会因为svn签出的顺序而失败某些ml yacc源文件。在这种情况下,您可以通过以下方式恢复执行
    $touch ml-yacc/src/yacc.grm.sig ml-yaacc/src/yacc.grm.sml(美元)
    使其比ml-yacc/src/yacc.grm更年轻。这是暂时的问题,直到修改构建脚本来解决此问题。

三、 查看私人开发分支

在本例中,分支被命名为初级支管-3,并且基于在顶级存储库目录上$smlnj/sml.

  1. 检查顶级目录下存在哪些分支,如sml公司(=基础),执行
    $svn列表$smlnj/sml/分支/
  2. 创建目标目录,这里称为primop3,并更改为该目录。
    $mkdir主选项3$cd primop3
  3. 在目标primop3目录中do
    $svn公司https://smlnj-gforge.cs.uchicago.edu/svn/smlnj/sml/branches/primop-branch-3底座
    或(给定shell变量的定义smlnj公司(见上文第一部分)
    $svn公司$smlnj/sml/brances/primop-branch-3基本
    这将检查sml目录的primop-branch-3代码,该代码在本地重命名作为“基础”。

  4. 运行checkout-all.sh获取其余的源代码(假设gf/admin已添加到PATH)
    $签出-全部.sh
  5. 运行config/install.sh以生成编译器。

David MacQueen和Matthias Blume
上次修改时间:2009年2月18日星期三14:53:26 CST