设为首页 收藏本站
查看: 1253|回复: 0

[经验分享] Mac OS X下自建git服务器

[复制链接]

尚未签到

发表于 2016-5-16 09:27:34 | 显示全部楼层 |阅读模式
git有4种协议方式建git服务器,分别是本地协议、SSH协议、git协议和http协议。
Mac OS X自带了apache web服务器,使用很方便,但是与其它几种方式相比速度很慢,一般以http协议的方式提供git库的只读访问。
对于日常工作提交,应以git方式为好,因为速度很快。
1。开启web服务器
1.1
打开“系统偏好设置”的“共享”,勾上“Web共享”即可,可以用浏览器访问http://localhost/试试,btw:
http://localhost/~[当前登陆用户]
是登陆用户的主页
1.2 这种方式使用了WebDAV上传/修改/删除服务器上的文件,缺省情况下WebDAV是不能增删改的,所以只能pull不能push,如果git push会出现问题:
error: Cannot access URL http://localhost/<my_project>.git, return code 22
或者
error: cannot lock existing info/refs
fatal: git-http-push failed
多是WebDAV没有配制好的问题
详细情况可参考这里:HOWTO Setup WebDAV on Mac OS X Leopard
会有安全隐患,不熟的没有必要还是不要弄了。
2。安装git
去git的下载主页找最新的安装dmg下载安装,缺省安装路径在 /usr/local/git目录下
3。初始化工程repository
cd ~/Document/workspace/<my project>
git init
git add *
git commit -m "initial import"

在web服务器目录下创建新的bare repository
git clone --bare -l /Users/woo/Documents/workspace/<my project> /Library/WebServer/Documents/<my_project>.git
cd /Library/WebServer/Documents/<my_project>.git
git update-server-info


好了,现在可以用http访问git库了:
cd  /tmp
git clone http://localhost/<my_project>.git


4. http访问比较慢,一般只对外提供只读访问用,日常代码提交可以通过git协议进行:
cd /Library/WebServer/Documents/<my_project>.git
touch git-daemon-export-ok

然后启动git daemon:
sudo /usr/local/git/libexec/git-core/git-daemon --base-path=/Library/WebServer/Documents/ --syslog --verbose --pid-file=/var/run/git-daemon.pid --user=_www --group=_www --detach --enable=upload-pack --enable=upload-archive --enable=receive-pack


base-path参数指出web服务器的Documents目录为git服务器基础目录,git-daemon会扫描该目录下所有尾缀为.git的目录,如果这些目录下有git-daemon-export-ok文件,则将此目录作为git协议的输出repository,用户和用户组都设为_www,与web服务器相同。
试试是否成功:
cd /tmp
git clone git://localhost/<my_project>.git

修改源代码后提交:
git push
如果出现如下错误:
pack-objects died of signal 13
error failed to push some refs   

或者

error: unpack failed: unpack-objects abnormal exit
To git://xxx.yyy.local/<my_project>.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git://xxx.yyy.local/<my_project>.git'

这类错误一般是git服务器端的问题,检查系统日志会发现:
Mar  7 22:11:50 xxx.yyy git-daemon[6334]: error: insufficient permission for adding an object to repository database ./objects

这是因为git-daemon命令启动时--user=_www --group=_www这两个参数制定的用户和用户组权限与服务器上/Library/WebServer/Documents的用户和用户组权限不一致所致。办法有两个:
a。将git服务器相关文件权限修改成www:www用户和用户组即可
sudo chown -R www:www /Library/WebServer/Documents
b。修改git-daemon启动参数(--user=www --group=www),使其与git服务器上repository文件的用户和权限一致,
git push如果出现错误
errno=Connection refused
fatal: The remote end hung up unexpectedly

这是因为git-daemon命令缺少这几个参数:
--enable=upload-pack --enable=upload-archive --enable=receive-pack

综上所述,http方式配制起来很麻烦,比较适合pull,虽然有点慢,采用git协议方式比较安全方便点,而且比较下可以发现git方式比http快的太多了。

参考:
Pro Git 2009
setting up git server fast macos x
Setting up a public (bare) repository with git

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-217559-1-1.html 上篇帖子: Mac OS X安装Git 下篇帖子: Mac OS X 下基于SSH的git服务器的搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表