赞
踩
本文转载自:http://blog.csdn.net/boy15174/article/details/8645320
因为第一次使用,所以本人参考了多篇博文查询许多相关资料终于搭建完成,中途遇到了很多困难,被我一一解决,分享出来希望能帮助到和我一样的小白。
由于我也是第一次使用,有些地方不是特别清楚,无法深入讲解,主要以如何搭建成功为主,也可能会说错,如有问题或者改进请在评论指出,感激不尽。
系统环境是OS X 10.8.2
首先我们先允许远程登陆以及共享:
系统偏好设置->共享,勾选文件共享,互联网共享和远程登陆
接下来创建一个新用户:
系统偏好设置->用户与群组,添加一个账户,账户名(可任意,不过大部分博文均指定该名称)就叫git,作为服务器账户,普通成员权限即可。本机还有个账户是boy15174(管理员权限,作为客户端账户)
http://www.koushikdutta.com/2009/04/setting-up-gitosis-server-on-os-x.html 该文章指出,你不应该在自己的自己的账户下运行gitosis,因为它会限制shell访问SSH,限制了gitosis-serve。
因为创建了普通权限的账户,所以无法使用sudo命令,使用时会报“xxx is not in the sudoers file.This incident will be reported.”错误
我们来做些修改,使它有sudo权限:
目标:找到sudoers文件,找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名),我们刚才创建的是git,所以添加一行git ALL=(ALL) ALL
http://blog.slogra.com/post-270.html 具体方法可以参考这篇
我这边另外提个不需要用命令行的方法。
先定位到sudoers文件,然后移动到其他任意文件夹,直接用编辑工具打开修改,再替换回去。
替换回去后去终端使用sudo命令会出sudoers文件权限相关的错误“sudo: no valid sudoers sources found, quitting”
参考我的这篇博文http://blog.csdn.net/boy15174/article/details/8644130 即可轻松解决,以后有其他系统文件出现权限问题均可用该方法解决。
接下来要正式开始了
主要参考
http://blog.csdn.net/kesalin/article/details/6943770
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way/
http://weizhifeng.net/build-git-server-with-gitosis.html
http://rritw.com/a/bianchengyuyan/C__/20120810/202535.html
假设你已经安装了git和python,在终端输入
接下来会多账户,为了防止混淆,我来解释下终端下各个部分代表什么
boy15174deMac-mini: 本机的名字
~ 当前所在的文件夹
boy15174 当前登陆的用户
$ 分隔符
git --version 执行的代码
注:接下来操作均切换至服务器账户git
确认安装过必需组件以后,首先来获取gitosis,终端输入
接下来进行安装(终端的CD命令,可用finder的shift+command+g来重现,如果代码跳转比较头痛,可用该组合键进行可视化查看效果)
完成后最后一行会出现:
该客户端的工作了,制作ssh rsa公钥:
如果你和我一样是一台机器2个账户的话,终端输入
这时候终端指令的开头部分变为bash-3.2$,注意区分
如果客户端和服务器不是同一台机器,则去准备作为客户端的机器
接下来均在在客户端账户执行
这边我们都先留空,直接敲回车即可
完成后会出现如下代码和加密字符图片
我们要找到这个公钥
然后把公钥放到服务器 /tmp 目录下
因为是同一台机器,所以我们直接用代码将该文件从客户端账户复制到服务器账户即可(注意这边前缀还是bash-3.2$)
公钥安放完毕后,使用ssh公钥初始化gitosis:
接下来的操作均切回服务器账户
同一台机器终端输入exit退出客户端账户。
在这里,会将该 client 当做认证受信任的账户,因此在 git 的 home 目录下会有记录,文件 authorized_keys 的内容与 yourname.pub 差不多。
我们可以定位到该文件查看一下
我们来修改一下post-update的权限,便于客户端提交
接下来,我们使用客户端,返回到客户端那边。
验证下服务器是否已经连通
如果返回如下结果,证明已经连通:
注意,如果这边没有连通,不要着急,先跳过这步。
接着从服务器端复制资源到本地,在客户端输入如下代码(2选1):
注意看第3行,“bash: gitosis-serve: command not found”
gitosis-serve没有被找到!这是为什么,也正因为没有被找到所以无法连通。
这个问题困扰了我好久,然后我参考了以下几篇文章:
http://blog.csdn.net/dqatsh/article/details/6280558
http://www.leoangel.cn/a/gitosis-build-note
然后得出的结果就是,因为最初看的几篇文章的年代较早,所以更新后文件的位置都有了变化,自然无法在本文之前设立的位置(PATH=/usr/local/bin:/usr/local/git/bin:$PATH)找到。
解决方法有几个
1.修改这个PATH路径
定位到.bashrc 打开,将PATH替换成PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/local/git/bin:$PATH
2.软连接到新的路径 (本人未实测)
3.直接把gitosis-serve复制到目标路径(参考第一篇文章,不过也是最笨的方法)
定位到gitosis-serve文件(通过搜索,或者终端输入which gitosis-serve),然后把该文件直接复制到git账户的.ssh文件夹下
这回我们再验证一遍地址,就可以通了。
于是我们再次重复clone操作,成功!
我们已经把gitosis-admin从服务器clone到本地了。
进入目录,我们可以看到里面有一个文件和文件夹
gitosis.conf 该配置文件就是用来控制读写权限的,可以用文本编辑打开。
keydir 文件夹是存放ssh公钥的地方,所以之前我们重命名了公钥。
打开gitosis.conf ,可以看到如下的一段:
group代表一个组
members是此仓库的成员,只有成员才有权限读写,右边的组员名称就是公钥的名字。如果有多个成员,中间用空格分开。例如:
注:我们以后修改权限都在本地进行编辑,然后push到服务器。
接下来我们在文件后面创建一个test组,然后保存上传。
终端进入到repositories目录,然后:
接下来返回客户端,我们可以用一个已有的项目或者创建一个新的项目。
这里我们从创建一个新项目开始,用已有的一个项目其实操作一样,相当于一个创建好的项目而已。
如果使用xcode,创建项目的时候记得在选择文件目录的地方下面创建本地git资源库打上勾就创建好新项目了。
不使用xcode的话,去任意目录,创建test文件夹,终端进入到该文件夹内,然后输入如下代码,就初始化完成了。
远程控制增加库到服务器根目录下repositories文件夹下的test.git仓库,将本地的分支推到远程的主分支。
其他git命令可参考http://www.cnblogs.com/cassvin/archive/2012/01/29/git_commands.html
到此,就把服务器的镜像和客户端的仓库连接起来了,可以用GUI的工具等等进行操作管理。
在MAC下,我们使用SourceTree或者使用xcode自带的git都行,关于工具的使用因为我也刚接触,所以暂不详细描述,以后有机会再补了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。