干货分享,灵感创作,不定期更新,敬请期待。

从搭建git服务器到项目自动部署

git xhq 2681℃ 0评论

刚拿到腾讯的试用服务器,昨晚迫不及待想要搭建一个git服务器,因为在公司习惯了这种开发模式(svn),觉得以前用ftp弱爆了,于是昨晚奋斗到三四点,最终在今天早上才搞定

git服务器搭建过程这里就不详细讲了,后面可能会出教程,这里讲讲我遇到的一些出人意料的问题,

首先,折腾了很久,服务器终于搭好了,但是发现从git服务器远程仓库目录新建文件根本clone、pull不下来,然后我又在客户端本地仓库新建文件push到远程仓库,然后到服务器远程仓库上直接用直接查看,发现神马都没有(没有上传新文件),然后猜想是不可见吗(git的机制,root都木有权限)?于是在客户端又新建另一个本地仓库,远程仓库地址指向同一地址,然后pull下来,发现,果然证实了这一猜想(在另一个本地仓库push上去的文件都有),于是,这样根本不适合开发,

我再想,是不是有方法可以把项目自动部署到其他可见的目录呢?于是,又去查找资料,发现果然有这样的方法,就是利用git的hooks钩子,当git某些行为触发这些钩子,我用的是post-receive钩子,按照教程我就把这段代码(git –work-tree=/home/3w –git-dir=/home/gittest/test.git checkout -f)写到hooks目录下的post-receive下(木有的话自己创建,还要赋予执行权限),但问题又来了,我就是在本地仓库怎么push到远程仓库都木有在/home/3w目录下发现任何文件,就这样到了三四点,

好了,今天早上十点多醒来,又去查找资料,然后又看了下post-receive下的代码,因为做开发多了,就有这样的觉悟(跳过一般的步骤,比如程序分为4步走,但是木有走到最后在中途就出了问题,我们就可以用各种手段,比如数据模拟,环境模拟等直接跳过第一步、或第二步…直接调试某个环节),于是乎,我直接在hooks目录下,执行了post-receive(./post-receive,当然,也可以直接执行文件里的命令),查看/home/3w,呢吗,东西都出来了,原因找到,就是权限问题,ls -l 发现/home/3w的所属是root(drwxr-xr-x  3 root root 4096 Dec  5 18:49 3w),于是改一下所属(chown -R git:git /home/3w,此时应该是drwxr-xr-x  3 git git 4096 Dec  5 18:49 3w),再到本地仓库push,呢吗,/home/3w神马都有了,

当然,git要远比这复杂得多,也灵活的多,这只是冰山一角,你还可以自定义自己的部署方式,比如,你不想部署得那么频繁,就可以对commit的某些文字进行匹配,匹配成功才实现部署,

亲爱的喷油,我们下回再见

(说明:关于3w目录这里只是演示了权限问题,最好所属还是root,只是给git赋予相应的部分权限)

转载请注明:爱游思 » 从搭建git服务器到项目自动部署

喜欢 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 注意上面的-work-tree,实际写法好像是--work-tree,--git-dir 也一样
    forevervas2015-12-06 21:59
  2. 就是前面是两横
    forevervas2015-12-06 22:00