Levelupsoft Inc. 软件产品

公司的代码
不该放在别人的服务器上

SSemRepo 是由公司自己运行的代码仓库。仓库、议题、代码评审与 Wiki 一并交付,开发者继续使用早已熟悉的 git 命令。

2
Git 与 Subversion 同屏
10
产品界面支持语言
100%
在自有基础设施内

为什么要自托管

把代码交出去,等于把公司交出去

外部仓库上手很快。代价是产品的设计与历史、谁在何时改了什么,全都堆在别人的基础设施上。

最重要的资产在外面

源代码就是公司造出的一切。想删除时不是自己删,而是请求对方删除;备份保留到什么程度,由服务条款决定。

线路一断,开发就停

在封闭的内网、工厂或现场,一次 clone 都通不过。有些地方不是规定不允许,而是物理上就到不了。

审计时无话可答

金融、医疗与公共部门审查问「那些源代码保存在哪里」时,除了拿出外部供应商的条款,没有别的答案。

产品

给了仓库并不算交付完成

放代码的地方和讨论代码的地方各自为政,最后还得再买一个工具。SSemRepo 把三者一并给齐。

01

仓库

git clone 与 push 通过 HTTPS 直接可用。在浏览器里读文件、提交与差异,迁移过来的 Subversion 仓库也在同一界面阅读。

02

协作

议题、里程碑、标签与负责人,拉取请求与代码评审,讨论板与 Wiki。都在同一个项目里完成。

03

运维

群组与权限、注册审批、邮件通知与模板、站点标志与备份,都在管理界面里改。不必为了改动而重新部署。

功能

开发团队每天都会用到的东西

Git 仓库

HTTPS 的 clone 与 push、分支与标签、提交列表与差异、文件浏览与网页编辑、派生。

Subversion 也在其中

迁移而来的 svn 仓库,其修订、文件与差异都在与 git 相同的界面阅读。旧资产不必丢弃。

议题与里程碑

标签、负责人与里程碑,父子议题,附件与评论,以及只返回你有权查看内容的搜索。

拉取请求

分支之间的差异、逐文件的评审意见、冲突提示、合并与自动关闭。

讨论板与 Wiki

公告放讨论板,规范与设计放 Wiki —— 使用与议题相同的编辑器和相同的附件。

十种语言

产品界面提供韩语、英语、日语、中文、德语、俄语、法语、越南语、印尼语与西班牙语。

界面

熟悉的位置放着熟悉的东西

学一套新工具的时间,才是采用它的真正成本。界面沿用开发者早已熟悉的布局 —— 左边项目,中间任务,上方代码。

界面说明

  • 左侧列出你所属的项目。私有项目只对有权限的人可见。
  • 中间是议题列表。可按标签、负责人与里程碑筛选;搜索只在你可见的范围内进行。
  • 上方标签页依次是代码、议题、拉取请求、讨论板与 Wiki。每个项目自行决定启用哪些。

命令行

界面上能做的,命令行也能做

人点着完成的事,和机器反复执行的事,并不相同。SSemRepo 附带自己的命令行工具 —— 在脚本里调用,接在构建之后,或者交给编码智能体。

界面上有的几乎都有

议题、讨论板、Wiki、拉取请求、里程碑、群组,直到站点管理。结果既可作为人读的表格,也可作为机器读的 JSON。

一台机器多个账号

把账号分成不同配置,再把目录与该在其中工作的账号绑定。进入该目录之下,自然就成了那个账号。

连 git 认证一起

它作为 git 凭据助手接入,push 时不再反复索要口令。保存的机密与该机器绑定后加密,只把文件拷到别的机器是打不开的。

为编码智能体而备

随附可直接接入 AI 编码工具的使用说明。「把这个缺陷提成议题」于是真的跑得起来。

这段记录的说明

  • 项目以 <属主>/<名称> 指代。常用的设为默认后即可省略。
  • 创建后会返回编号。凭这个编号去评论、改状态、指派负责人。
  • 查询也是同样的写法。收窄列表的条件,与界面上的筛选一致。

架构

一眼看清的部署

浏览器与 git 客户端进入同一个地址。Web 服务器接收后交给 Tomcat,历史写入 PostgreSQL,仓库文件留在公司自己的磁盘上。

Levelupsoft Inc.开发者浏览器 · git · svnWeb 服务器HTTPS · 反向代理SSemRepoJava 21 · Tomcat 11PostgreSQL议题 · 权限 · 历史仓库磁盘git · svn · 附件公司邮件SMTP 通知

图示说明

  • 从左到右:开发者 → Web 服务器 → SSemRepo → 存储。所有箭头都止于公司边界之内。
  • 实线是人走的路。浏览器界面与 git 的 clone、push 都从同一个 443 端口进入。
  • 下方分支是文件。仓库与附件原样放在公司磁盘上,而不是数据库里 —— 备份就是复制文件。
  • 虚线是通知。只经由公司自有 SMTP 发出;发不出去时,产品不会谎称已发送。
  • 没有箭头指向外部。在禁止外连的网络里,它照样运行。

迁移

把现有的仓库原样搬过来

从零起步的团队,少于早已积累多年的团队。你现在所用工具里的 git 与 svn 仓库、议题与附件都能迁过来,迁移步骤与工具一并提供。

数据库

从现用工具的数据库里读出议题、评论与历史,迁入 PostgreSQL。不是把值当成文本替换,而是用驱动读出后原样写入。

仓库与附件

git 与 svn 仓库以及上传文件连目录一起整体复制。仓库本身无论出自哪种工具都是标准的,无需另行调整。

账号与权限

用户、群组与角色一同迁移。若口令方式相符,原有口令继续可用,无需全员重新注册。

并行比对

关闭旧系统之前,在两个界面比对同一批资料。迁移时始终留着可以退回的位置。

迁移的规模与日程,取决于仓库数量与磁盘大小。与我们联系,我们会一起查看你当前的环境。

部署

从安装到第一次 push,四个步骤

  1. 1

    启动服务器

    两个容器 —— 应用与 PostgreSQL。你要决定的只有仓库存放在哪块磁盘。

  2. 2

    建表与首位管理员

    建好表、载入初始数据,然后创建管理员账号。指南里写明了要敲的命令。

  3. 3

    域名与证书

    指向公司域名并配置 HTTPS。由于 git 流量会经过,只需放宽请求体大小限制。

  4. 4

    让团队进来

    确定注册方式,建立群组与项目。若需要迁移,旧资料就在这一步导入。

技术

为了能长期维护而打造

Java 21 · Tomcat 11

一台普通的 Java 服务器就够。运维团队用他们早已熟悉的方式启动与重启。

PostgreSQL · 纯 JDBC

不夹带沉重的映射层,直接书写 SQL。查询慢的原因,就在查询里找到。

Svelte 5 界面

为让首屏轻快呈现,削减了下载量。连字体也由公司内网直接提供。

超过 1,700 项自动检查

不是对着桩件,而是连上真实服务器:建项目、推送、开拉取请求,全程跑一遍。

正在考虑引入 SSemRepo 吗?

告诉我们团队规模与当前使用的仓库,我们会提出合适的方案,并协助试装与迁移。

联系我们

halo@levelupsoft.com+82 10-8472-4070

Levelupsoft Inc.