1
1
mirror of https://github.com/renbaoshuo/S2OJ.git synced 2025-04-01 13:44:35 +00:00
2017-04-07 11:15:39 +08:00

2.4 KiB
Raw Blame History

开发

听说你想写代码?

svn://local_uoj.ac/uoj 和 svn://local_uoj.ac/judge_client 欢迎你(如果你没改 UOJ 的 hostname 的话),这是两个 svn 仓库,至于 svn 仓库权限问题……你需要手工加一下……

在 /var/svn/uoj/conf/passwd 这个文件中你可以加一行

uoj = 666666

来增加一位名为 "uoj",密码为 "666666" 的 svn 仓库管理员。

之后你就可以随意用 svn 玩耍了哇咔咔……

在本地写完之后,如果你想与别人分享,你可以把代码再放到 git 中(什么鬼?)再 push 到 github。

如果你想更新的东西已经不局限于网站代码,还想对数据库、文件系统之类的折腾一番,请在 app/upgrade 目录下建立文件夹,举个例子,叫 2333_create_table_qaq。即,以一串数字开头,后面加一个下划线,再后面随便取名字吧,仅能包含数字字母和下划线。

在这个文件夹下你可以放一些小脚本。大概 UOJ 运行这些小脚本是这么个逻辑:

if (is_file("{$dir}/upgrade.php")) {
	$fun = include "{$dir}/upgrade.php";
	$fun("up");
}
if (is_file("{$dir}/up.sql")) {
	runSQL("{$dir}/up.sql");
}
if (is_file("{$dir}/upgrade.sh")) {
	runShell("/bin/bash {$dir}/upgrade.sh up");
}

你只需要在 /var/www/uoj/app 下执行 php cli.php upgrade:up 2333_create_table_qaq 就可以运行了,这个运行过程我们称为 up

请务必再写一下还原的小脚本,我们称为 down。写完代码后你需要保证 updown 能回到原来的系统。与 up 类似,你需要执行 php cli.php upgrade:down 2333_create_table_qaq,执行 down 的逻辑如下:

if (is_file("{$dir}/upgrade.php")) {
	$fun = include "{$dir}/upgrade.php";
	$fun("down");
}
if (is_file("{$dir}/down.sql")) {
	runSQL("{$dir}/down.sql");
}
if (is_file("{$dir}/upgrade.sh")) {
	runShell("/bin/bash {$dir}/upgrade.sh down");
}

在数据库中UOJ 会记录自己已经加载了哪些 upgrade当你执行 php cli.php upgrade:latest 的时候UOJ 会把所有已经在 app/upgrade 文件夹下但还没有加载的 upgrade 都给 up 一下,并且是按前缀上的那一串数字从小到大执行。所以写好了这种小 upgrade 之后,你就可以跟别人分享了!

不过关于架构什么的介绍我还是先

坑着