去年公司采购了一台NAS设备,本来是给文化业务部门做素材库用的,结果我发现磁盘利用率很低,看着那么贵的希捷酷狼闲置真心痛啊!突然想到目前公司软件研发的源码管理分两块,一个是gitee,一个是阿里云ECS服务器搭建的Gitblit,这两个资源已经被挤占的很严重,还要另外开销一笔费用,不如集中起来管理到一个设备上。
名称 | 版本 | 备注 |
---|---|---|
群晖NAS | DS1821+ | |
群晖NAS操作系统 DSM | 7.2.1-69057 Update 5 | |
群晖NAS套件Git Server | 2.39.1-1079 | |
终端机SSH客户端 Xshell | 7.0.0040 | |
终端机Git客户端 | 2.45.1 |
NAS创建用户及用户组
- 使用管理员登录NAS控制台。
- 进入控制面板 > 文件共享 > 共享文件夹 > 新增 - 名称 GitRepo。
- 进入控制面板 > 文件共享 > 用户与群组 > 用户账号 > 新增 - 创建用户 - 名称 gituser。(PS:几个开发人员就创建几个)
- 进入控制面板 > 文件共享 > 用户与群组 > 用户群组 > 新增 - 群组名称 gitdev。(PS:为了方便后续文件目录按群组授权)
- 进入控制面板 > 文件共享 > 共享文件夹 > 选择 GitRepo - 编辑 - 权限 - gituser 勾选 可读写。
安装Git套件并授权
- 进入套件中心 > 所有套件 > 搜索 - Git Server - 安装。
- 打开套件Git Server > 允许访问 - 勾选 gituser。
配置SSH访问
终端机通过SSH连接NAS服务器的Git Server并用linux命令创建和授权git目录
- 用Xshell连接NAS,类似连接liunx系统。(PS:NAS网络访问配置我是采用了DDNS并在路由器进行了 22 端口转发。)
- 我习惯Git仓库的目录按照项目来分组,所以在GitRepo目录下按照项目名称再创建一层ProjectName目录,ProjectName下再创建各个源码工程的Git仓库目录。(PS:当然也可以通过分支的方式来一个仓库管理多个项目,一切看个人习惯!)
我的仓库目录结构基本如下所示:
GitRepo------|
-----------ProjectName------|
-------------------------CodeProject1.git
-------------------------CodeProject2.git
-------------------------CodeProject3.git
命令如下
bash
cd /volume1/GitRepo/
mkdir ProjectName
cd ProjectName/
mkdir CodeProject.git
- 初始化git仓库,加属性--bare代表创建远程仓库。
bash
cd CodeProject.git/
git init --bare
- 授权git用户可以读写源代码仓库目录。(PS: 这里我直接把整个GitRepo递归授权给了整个gitdev用户组,建议还是单独对用户授权!)
bash
sudo chown -R :gitdev GitRepo
针对某个用户gituser授权某个Git源码仓库目录,具体详查liunx命令。
bash
sudo chown -R gituser CodeProject.git
注意,执行该授权命令时所在的目录。
迁移本地源码工程的Git远程仓库地址
- 打开本地git bash窗口,执行
bash
git clone ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git
- 如果你本地已经有源码工程,可以直接去修改一下远程仓库地址即可。(PS:记得要把本地仓库镜像方式push一下,这样所有之前的分支和历史信息都会保留。)
例如: IDEA中Git > manage Remotes > URL - 更新为NAS的地址,即ssh://gituser@ip或域名/volume1/GitRepo/ProjectName/CodeProject.git。