SML/NJ SVN Howto公司
存储库布局
该存储库包含许多半独立的顶层树:
- 管理员--存储库管理
- 页--网站
- sml公司--过去是整个SML/NJ源的尾部树木;它应该作为基础(见下文)
- 配置--shell脚本等用于配置和安装
- MLRISC公司--MLRISC库
- 克基特--CKIT库
- nlfi公司--由运行时组成的NLFFI源库(lib)和生成器工具(gen)
……等等。匿名存储库访问
下面的许多说明都假设您可以访问子版本存储库。如果您在访问方面遇到问题,可以使用用户名“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”解释),然后通过检查用各种子树填充它此存储库的外部部分(可能还有其他存储库)。默认布局使用以下内容填充根:
- 配置
- 基础
- smlnj-lib公司
- MLRISC公司
- ml-年
- 毫升lex
- nlfi公司
- ckit公司
- 立方厘米
- 电子氙气
- ml-burg公司
- 列克森
- ml-lpt(百万磅)
- heap2asm公司
- smlnj-c型
- pgraph(图形)
- 跟踪调试文件
并非所有这些树都是必需的。假设我们已经将以下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/开发
).
- 定义一些shell变量
$出口gf=https://smlnj-gforge.cs.uchicago.edu/svn$export smlnj=$gf/smlnj
- 在您的
$斯莫尔德夫
目录,创建目录gf$cd$SMLDEV$mkdir增长
- 转到gf并签出管理目录
$cd gf$svn公司$smlnj/admin
这将创建包含一些shell的子目录gf/admin自动签出完整源代码的脚本,检查状态等。
- 将$SMLDEV/gf/admin添加到shell路径中。
当然,你可以把这个结帐台放在其他地方,比如你的个人bin文件,或者在/usr/local/bin中(如果您有权限)。在在这种情况下,步骤4是不必要的。
二、。签出主干smlnj代码的工作副本并构建编译器
- 假设您在开发目录中,请创建一个目录并签出所需的顶级子目录。这个通过为checkout-all.sh指定目录名,可以一步完成作为一个论点,例如:
$checkout-all.sh smlnj
- 切换到新的工作目录并运行安装脚本:
$cd smlnj(美元)$config/install.sh
- 如果您的
路径
,那么这可能会因为svn签出的顺序而失败某些ml yacc源文件。在这种情况下,您可以通过以下方式恢复执行$touch ml-yacc/src/yacc.grm.sig ml-yaacc/src/yacc.grm.sml(美元)
使其比ml-yacc/src/yacc.grm更年轻。这是暂时的问题,直到修改构建脚本来解决此问题。
三、 查看私人开发分支
在本例中,分支被命名为初级支管-3
,并且基于在顶级存储库目录上$smlnj/sml
.
- 检查顶级目录下存在哪些分支,如
sml公司
(=基础
),执行$svn列表$smlnj/sml/分支/
- 创建目标目录,这里称为primop3,并更改为该目录。
$mkdir主选项3$cd primop3
- 在目标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代码,该代码在本地重命名作为“基础”。
- 运行checkout-all.sh获取其余的源代码(假设gf/admin已添加到PATH)
$签出-全部.sh
- 运行config/install.sh以生成编译器。
David MacQueen和Matthias Blume
上次修改时间:2009年2月18日星期三14:53:26 CST