Synology DS213J 群晖NAS git server架设方法!

最近单位购入一台Synology  DS213J用做数据存储。java

本人打算将一些项目的源代码也放在上面,他自己的套件中心提供了SVN SERVER和GIT SERVER。git

设置SVN SERVER很是简单,基本上安装成功,设定帐号,便可使用。shell

可是GIT SERVER的架设遇到了麻烦,按照他的帮助说明,是没法成功的,通过尝试,发现其实就是写帮助的人少写了一点内容(也就是目录权限的修改),便可解决。服务器

现将解决方法记录以下,做为本身的备忘录,若是能帮助到有一样需求和一样麻烦的人,那么也是很开心的事情。网络

1.首先,进入DSM,而后在套件中心中找到GIT SERVER,下载安装便可。架构

2.看看DSM帮助中心对GIT SERVER使用的帮助:ssh

若要容许用户使用 Git:

请使用拥有管理权限的账户登陆 DSM。进入控制面板 > 终端机并启用 SSH 服务。
请启动 Git 套件,并选择用户以向其提供从资料库签入与签出文件的能力。
注:

经过称为 git-shell 的壳工具,Git 用户将被限制仅可进行 Git 相关活动。此登陆壳将应用于 Git 用户可进行确保这些账户仅用于 Git 操做。所以,Git 用户只能使用 SSH 链接来推拉 Git 存储库,而没有 DSM 彻底的访问权限。

若要建立 Git 存储库:

请经过 SSH 服务以 root 或 admin 身份登陆 Synology 服务器。
将目录更改成 /volumeX(X 为卷编号)以建立文件夹。例如,“git_repos”。该文件夹将拥有与 Linux 相同的权限。
请在该文件夹中运行 git init 来建立空存储库。
建立存储库后,Git 客户端用户可输入如下命令来访问该存储库:
git clone ssh://[Git 用户]@[您的 Synology 服务器 IP 地址或主机名]/[Git 存储库路径]

  这里鄙视一下写帮助的这我的,我严重怀疑群晖的工做人员是没有真的在他们机器上测试过GIT SERVER的。由于按照他帮助说的方法,你是不可能成功的。工具

遇到这个问题的时候我搜遍了网络,也没有第二我的有这个问题的描述,只是查找到很多从头安装GIT SERVER的文章,并且其中还充斥着不少无用的步骤。测试

3.正确的方法以下:命令行

安装成功以后,在DSM中建立一个GIT用户,好比我建立的用户为jackwong,而后进入DSM左上的功能菜单,打开GIT SERVER窗口,将容许访问GIT库的用户打上勾。好比我就将jackwong这个用户打上了勾。

而后进入控制面板 > 终端机并启用 SSH 服务。

到这一步,DSM的设置任务就完成了。

接着经过SSH链接到你的这个DS213J上。登录的时候固然采用root登录,密码就是admin的密码。

登录进去以后,就是Linux命令行操做了。

首先进入你的磁盘卷,通常名字是volumeX,X表示你建立的磁盘空间数量,通常这个机器就两个硬盘,通常就是volume1了

cd /volume1

接着建立一个git库目录

mkdir git_repos

而后再里面建立一个测试项目

cd git_repos

mkdir gittest

而后进入这个测试项目目录

cd gittest

进行GIT初始化

git init --bare

因为是root用户执行的操做,因此有一个最最重要的步骤,就是将这个宝库的整个目录的主人要修改成你的git用户

chown -R jackwong:users  git_repos

若是你还想让其余用户也一块儿共享的话,

还须要将其余用户的权限设置为可写

chmod -R 775 git_repos

固然,这里的git_repos是整个库目录,我是为了省事情,若是不一样项目须要区别对待,那就对里面的项目目录进行设置就能够了。

总的原则就是某个用户要想能推送文件到服务器,必须打开这个用户对整个项目目录,包括子目录的写权限,不然就会失败。

 

到这里,服务器就设置完毕了。

在客户端进入git 命令行,测试一下是否能够下载和上传。

git clone ssh://jackwong@192.168.0.1/volume1/git_repos/gittest

而后再本地添加一个文件并提交到本地版本库中

echo "t1.txt" >t1.txt

git add t1.txt

git commit -m "add t1.txt"

最后测试一下推送到GIT SERVER上

git push origin master

显示成功!

 

若是要添加其余用户,只须要在DSM中建立帐号,而且在GIT SERVER界面中容许访问的勾打上。并保证这个用户在git_repos下的对应项目文件夹中具备写权限就能够了。

 

PS :GIT的使用和SVN这类中心式的架构有很大不一样。要把本地项目建立到GIT SERVER上,须要费点周折。

简单的说能够按照以下步骤:

1.先在本地建立项目,有个项目目录

2.而后在本地的这个项目目录中执行git --bare init进行初始化。

3.而后将须要提交的文件提交到本地

4.而后将项目目录COPY到服务器上,只COPY  .git 目录就行,其余工做目录不用COPY的。

5.在本地就能够推送到远程服务器上了。

还有一种方法:

若是本地初始化的时候使用的是git init,那么推送就会出现问题。

解决方法是将本地的目录所有COPY到服务器上。

而后再服务器对应目录下面执行:


接着删除掉除.git目录以外的全部文件和目录便可。
这样本地就能顺利推送了。

固然直接使用

git clone --bare hello hello.gitgit config --bool core.bare true
这样直接导出裸库,而后将hello.git 这个目录直接上传到服务器上也能够。不过地址须要加上hello.git这个的目录。
相关文章
相关标签/搜索