diff --git a/README.md b/README.md
index b9282b5..40100a1 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,72 @@
-# 欢迎使用 CodeFever Community 版本
+
+
+
+
+
+
+
+
+
+ CodeFever Community
+
+
+
+
+
+ 完全开源的 Git 代码托管服务
+
+
+
+
+[](CODE_OF_CONDUCT.md) [](https://codefever.cn) [](https://github.com/PGYER/codefever/)
+
+
+
+
+ Built with ❤︎ by
+
+ CodeFever
+
+
+
+
+
+
+
+
+
+
+ 目录
+
+---
+
+- [关于](#关于)
+- [功能特性](#功能特性)
+- [如何安装](#如何安装)
+- [使用](#使用)
+- [问题反馈](#问题反馈)
+- [贡献代码](#贡献代码)
+- [贡献文档](#贡献文档)
+
+---
+
+
+
+### **关于**
`CodeFever` 项目起初由 蒲公英开发者服务平台 开发和维护,项目于 2020 年 6 月上线 [https://codefever.pgyer.com/](https://codefever.pgyer.com/) 。 经过将近两年时间打磨和稳定性验证,于 2022 年 2 月开源,接受社区的考验。
@@ -14,7 +76,21 @@
`CodeFever Community` 保留了 `CodeFever` 的大部分功能,并且进行了更适合单机部署的优化。`CodeFever Community` 也会随 `CodeFever` 更新的同时接受来自社区的提交。
-### 如何安装
+### **功能特性**
+
+- 🆓 **永久免费:** 永久免费提供给大家使用,您无需担心付费
+- ❤️ **完整开源:** 毫无保留的完整开源,无任何编译或加密代码
+- 🥬 **轻量安装:** 极简设计风格,排除重度冗余的多余功能
+- ⚡️ **性能高效** 速度极快,对服务器资源要求极低,1核CPU/1G内存即可运行
+- ♾️ **无限仓库** 没有任何仓库数量、使用数量的限制
+- ⌨️ **代码对比** 支持提交代码的不同版本支持高亮显示对比
+- 🛤️ **分支和标签** 完整支持 Git 原生功能,帮助更清晰的管理代码
+- 🙋♂️ **合并请求(Merge Request)** 支持多人协作,让代码版本控制更顺畅
+- 🙅🏻♀️ **分支保护** 分支保护功能让代码提交安全可控,代码 Review 更容易清晰
+- 👥 **多人协作** 支持多人团队协作,并可以设置每个成员的角色和权限
+- 🖥️ **管理后台** 支持超级管理员后台,可以让团队leader管理所有项目和用户信息
+
+### **如何安装**
`CodeFever` 提供 `从头开始安装` 和 `Docker 镜像安装` 两种安装方式, 可以根据自己的实际需要选择安装方式。
@@ -31,39 +107,25 @@
参照: [Docker 镜像安装](doc/zh-cn/installation/install_via_docker.md)
-### 使用
+### **使用**
-[仓库](doc/zh-cn/reposiotry)
+- [仓库](doc/zh-cn/reposiotry)
+- [仓库组](doc/zh-cn/reposiotry_group)
+- [管理员设置](doc/zh-cn/admin)
+- [Git](doc/zh-cn/git)
+- [常见问题](doc/zh-cn/common)
-[仓库组](doc/zh-cn/reposiotry_group)
+### **问题反馈**
-[管理员设置](doc/zh-cn/admin)
+- 如果你在使用过程中遇到期望外的结果,欢迎提交 `Issue`。参照: [提交问题](doc/zh-cn/contribute/bug_fix_issue.md)
+- 如果你希望在 `CodeFever Community` 添加一些特性,也欢迎提交 `Issue`。参照: [提交特性请求](doc/zh-cn/contribute/request_feature_issue.md)
-[Git](doc/zh-cn/git)
-
-[常见问题](doc/zh-cn/common)
-
-### 问题反馈
-
-如果你在使用过程中遇到期望外的结果,欢迎提交 `Issue`。
-
-参照: [提交问题](doc/zh-cn/contribute/bug_fix_issue.md)
-
-如果你希望在 `CodeFever Community` 添加一些特性,也欢迎提交 `Issue`。
-
-参照: [提交特性请求](doc/zh-cn/contribute/request_feature_issue.md)
-
-### 贡献代码
+### **贡献代码**
欢迎提交 `PR`, 请确定修复 `Bug` 后或者新增 `Feature` 后进行适当的测试。
-如果 `PR` 内容是问题,请先提交 `Issue` 并在提交 PR 时引用该 `Issue`。
-
-参照: [提交问题修复](doc/zh-cn/contribute/bug_fix_pr.md)
-
-如果 `PR` 内容是新特性,请在 `PR` 中请尽量详细描述此特性的内容,如果此 PR 是针对某个特性请求的提交,在提交 PR 时引用该 `Issue`。
-
-参照: [提交新特性](doc/zh-cn/contribute/new_feature_pr.md)
+- 如果 `PR` 内容是问题,请先提交 `Issue` 并在提交 PR 时引用该 `Issue`。参照: [提交问题修复](doc/zh-cn/contribute/bug_fix_pr.md)
+- 如果 `PR` 内容是新特性,请在 `PR` 中请尽量详细描述此特性的内容,如果此 PR 是针对某个特性请求的提交,在提交 PR 时引用该 `Issue`。参照: [提交新特性](doc/zh-cn/contribute/new_feature_pr.md)
### 贡献文档
diff --git a/application/config/constants.php b/application/config/constants.php
index 35e83e3..32392fc 100755
--- a/application/config/constants.php
+++ b/application/config/constants.php
@@ -126,7 +126,7 @@ define('GROUP_TYPE_USER', 2); // 用户个人默认分组
// preserve url segment
define('PRESERVE_URI', [
- '/^(feature|doc|lang|service|about|pricing|user|users|file|avatar|boss|captcha)$/i',
+ '/^(feature|doc|community|lang|service|about|pricing|user|users|file|avatar|boss|captcha)$/i',
'/^(static|static-\d+)$/i',
'/^(api|apiv\d+|apis)$/i',
'/^(userInfo|userInfos)$/i',
diff --git a/application/models/repository_model.php b/application/models/repository_model.php
index 381f6bb..d33f8af 100755
--- a/application/models/repository_model.php
+++ b/application/models/repository_model.php
@@ -186,7 +186,7 @@ class Repository_model extends CI_Model
$data['create'] = strtotime($item['mr_created']);
$data['update'] = strtotime($item['mr_updated']);
$data['reviewers'] = $this->getMergeRequestReviewers($item['mr_key']);
- $data['commit'] = $this->getLastCommit($item['mr_source_r_key'], $item['u_key'], $item['mr_source_branch'], '', $item['mr_source_merged_hash']);
+ $data['commit'] = $this->getLastCommit($item['mr_source_r_key'], $item['u_key'], $item['mr_source_branch'], '', $item['mr_source_merged_hash'] ? $item['mr_source_merged_hash'] : '');
array_push($output, $data);
}
diff --git a/doc/zh-cn/installation/install_from_scratch.md b/doc/zh-cn/installation/install_from_scratch.md
index 955b925..ee5f1bd 100644
--- a/doc/zh-cn/installation/install_from_scratch.md
+++ b/doc/zh-cn/installation/install_from_scratch.md
@@ -2,7 +2,7 @@
## 此文档适用条件
-> 如果你的情况符合以下条件, 你可以使用 `从零开始安装` 的方式安装 `CodeFever` 否则请使用 `Docker 镜像安装` 方式安装。
+> 如果你的情况符合以下条件, 你可以使用 `从零开始安装` 的方式安装 `CodeFever` 否则请使用 [Docker 镜像安装](install_via_docker.md) 方式安装。
- 学习和技术交流
- 需要做定制化修改
@@ -38,7 +38,7 @@ swapon /root/swap
```shell
# 安装基础软件包
-yum install -y autoconf cmake3 yaml pcre pcre-devel libxml2 libxml2-devel openssl openssl-devel sqlite sqlite-devel libpng libpng-devel libwebp libwebp-devel libjpeg libjpeg-devel libXpm libXpm-devel freetype freetype-devel oniguruma oniguruma-devel libyaml libyaml-devel
+yum install -y sudo tcl tk gettext autoconf gcc cmake3 wget initscripts openssh-server pcre pcre-devel libcurl libcurl-devel libxml2 libxml2-devel openssl openssl-devel sqlite sqlite-devel libpng libpng-devel libwebp libwebp-devel libjpeg libjpeg-devel libXpm libXpm-devel freetype freetype-devel oniguruma oniguruma-devel libyaml libyaml-devel
```
除此之外,你还需要安装 `libzip 1.7+` 库,需要去官网下载源码包解压后安装。
@@ -158,7 +158,7 @@ corepack enable
MySQL 不需要单独安装,直接使用系统自带软件工具安装软件包即可。需要安装于 `MySQL 5.7` 以上的相当版本。
-去官网按照指导使用镜像源安装二进制版本 (https://mariadb.org/download/?t=repo-config),如果你使用使用云数据库,你可以跳过此步骤。
+去官网按照指导使用镜像源安装二进制版本 (https://mariadb.org/download/?t=repo-config 选择 `xTom GmbH - San Jose` 镜像),如果你使用使用云数据库,你可以跳过此步骤。
启动服务后使用 `mysql_secure_installation` 或 `mariadb-secure-installation` 初始化数据库
@@ -175,10 +175,10 @@ set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_B
去 `Github` 上下载源码并安装 `/data/www/codefever-comminuty` 目录下
```shell
- mkdir /data/www
- cd /data/www
- git clone https://github.com/PGYER/codefever.git codefever-community
- cd codefever-community
+mkdir -p /data/www
+cd /data/www
+git clone https://github.com/PGYER/codefever.git codefever-community
+cd codefever-community
```
* 如果 `Github` 的 `HTTP` 服务访问速度较慢,可以尝试使用 `SSH` 服务(需要提前设置 `SSH Key`)
@@ -222,7 +222,20 @@ sh ./install.sh
cd /data/www/codefever-community/misc
sh ./create_db.sh
```
-
+
+为服务开启 `chkconfig` 以开机自动运行
+
+```shell
+chkconfig mariadb on # 或 chkconfig mysql on (根据安装的数据库类型, 如果使用云服务忽略此项目)
+chkconfig nginx on
+chkconfig php-fpm on
+chkconfig codefever on
+```
+
尝试访问 `http://127.0.0.1` 或 `http://` 来登录
-默认管理员用户: `root@codefever.cn`, 密码: `123456`。登录后请修改密码并绑定 MFA 设备。
\ No newline at end of file
+默认管理员用户: `root@codefever.cn`, 密码: `123456`。登录后请修改密码并绑定 MFA 设备。
+
+### 10. 服务维护
+
+服务维护请参见 [管理员设置/概览和系统服务](../admin/dashboard.md) 中的 `系统服务状态及维护` 一节
diff --git a/doc/zh-cn/installation/install_via_docker.md b/doc/zh-cn/installation/install_via_docker.md
index e417c91..98a05d6 100644
--- a/doc/zh-cn/installation/install_via_docker.md
+++ b/doc/zh-cn/installation/install_via_docker.md
@@ -1,3 +1,41 @@
# Docker 镜像安装
-> 文档正在准备中
\ No newline at end of file
+## 此文档适用条件
+
+> 如果你的情况符合以下条件, 你需要使用 [从零开始安装](install_from_scratch.md) 的方式安装 `CodeFever` 否则请跳过本章节继续使用 `Docker 镜像安装` 方式安装。
+
+- 学习和技术交流
+- 需要做定制化修改
+- `Docker 镜像安装` 不能满足处理 `Bug` 和提交 `PR` 的需求
+- Docker 镜像不能在当前 `操作系统` 或 `硬件架构` 上使用
+
+参见: [从零开始安装](install_from_scratch.md)
+
+## 安装步骤
+
+### 0. Docker 镜像说明
+
+`CodeFever Community 版本` 的 `Docker 镜像` 是从 `dockerhub` 上的 `centos:centos7.9.2009` 镜像开始按照 [从零开始安装](install_from_scratch.md) 中的步骤进行构建, 构建架构是 `x86_64 (amd64)` 如果有其他需求请自行构建镜像。
+
+### 1. 获取镜像
+
+从 `dockerhub` 上获取到 `CodeFever Community 版本` 镜像。
+
+```shell
+docker pull pgyer/codefever-community:latest
+```
+
+### 2. 启动
+
+在本地启动 `CodeFever Communiy 版本` 的 `Docker 镜像`
+
+```shell
+docker container run -d --privileged=true --name codefever -p 80:80 -p 22:22 -it pgyer/codefever-community:latest /usr/sbin/init
+```
+
+> - 如果你希望使用 `22` 端口作为 `Git` 的 `SSH 协议`端口。 你需要在启动镜像前将宿主系统的 `SSH 服务` `端口` 先修改成其他端口
+> - 如果服务异常你可以登录 Shell 去人工维护, 也可以直接重启容器重启服务。
+
+### 3. 服务维护
+
+服务维护请参见 [管理员设置/概览和系统服务](../admin/dashboard.md) 中的 `系统服务状态及维护` 一节
diff --git a/misc/nginx.conf-template b/misc/nginx.conf-template
index 76fd232..d9b969f 100644
--- a/misc/nginx.conf-template
+++ b/misc/nginx.conf-template
@@ -59,7 +59,7 @@ http {
try_files $uri /app$uri 404;
}
- location ~* ^/(user|file|feature|doc|lang|captcha|service|api(v\d+)?)?(\/.*)?$ {
+ location ~* ^/(user|file|feature|doc|community|lang|captcha|boss|service|pricing|api(v\d+)?)?(\/.*)?$ {
try_files $uri $uri/ /index.php;
}
@@ -115,7 +115,7 @@ http {
proxy_pass http://localhost;
}
- location ~* ^/(user|file|feature|doc|lang|captcha|boss|service|pricing|api(v\d+)?)?(\/.*)?$ {
+ location ~* ^/(user|file|feature|doc|community|lang|captcha|boss|service|pricing|api(v\d+)?)?(\/.*)?$ {
proxy_pass http://localhost;
}
diff --git a/www/view/build/asset-manifest.json b/www/view/build/asset-manifest.json
index c578e3c..55db32e 100644
--- a/www/view/build/asset-manifest.json
+++ b/www/view/build/asset-manifest.json
@@ -1,7 +1,7 @@
{
"files": {
- "main.js": "/static/js/main.04c34ef2.js",
- "main.js.map": "/static/js/main.04c34ef2.js.map",
+ "main.js": "/static/js/main.f834e978.js",
+ "main.js.map": "/static/js/main.f834e978.js.map",
"static/css/1.75563d44.chunk.css": "/static/css/1.75563d44.chunk.css",
"static/js/1.18365ff4.chunk.js": "/static/js/1.18365ff4.chunk.js",
"static/js/1.18365ff4.chunk.js.map": "/static/js/1.18365ff4.chunk.js.map",
@@ -12,6 +12,6 @@
"entrypoints": [
"static/css/1.75563d44.chunk.css",
"static/js/1.18365ff4.chunk.js",
- "static/js/main.04c34ef2.js"
+ "static/js/main.f834e978.js"
]
}
\ No newline at end of file
diff --git a/www/view/build/index.html b/www/view/build/index.html
index 2efdfc5..9459979 100644
--- a/www/view/build/index.html
+++ b/www/view/build/index.html
@@ -1,3 +1,3 @@
CodeFever Community
\ No newline at end of file
+