跨windows、Linux的Gitosis运用概念全解
2021-05-06 09:27
标签:git gitosis 开始用Git,但是老觉得公司的代码放上边不太放心,毕竟是商业性的代码。所以就搜索网上各位博主们如何搭建私有的git服务器来实现团队、公司内部的代码保存、协作,发现很多文章解释了步骤但是没有解释清楚原理,而且涉及到在多台电脑之间的操作切换,安装者基本的原理都没有搞清楚,就不知道什么东西该在什么地方做对应的配置,使得安装者不知道怎么安装成功、怎样算安装成功、安装成功后怎么用?基于对该问题的解决,为了避免后来者走弯路笔者遂挥毫记之,以便后来者看之、鉴之。 言归正传:首先Gitosis系统中的作为一个代码、工程的同步平台所有存在多台电脑,每台电脑在Gitosis系统具有不同的角色,角色分别为:Gitosis服务器、Gitosis管理客户端、Gitosis普通客户端,Gitosis管理客户端也可以作为普通客户端登入,其中: (1)Gitosis服务器作为各git客户端(Gitosis普通客户端、Gitosis管理客户端)代码各版本代码上传、存储、同步下载的服务器。 (2)Gitosis管理客户端作为初始客户端,Gitosis服务器根据Gitosis管理客户端生成的公钥进行git服务器初始化;远程配置并以git上传的方式在Gitosis服务器上创建团队工程、添加普通客户端公钥到keydir使之具有免密访问的前提、配置每个工程对应的每个客户端的访问权限(包括Gitosis管理客户端,因为在后续的日常使用中其也可以作为Gitosis普通客户端接入)。 (3)Gitosis普通客户端,产生公钥-私钥对,并拷贝其公钥给Gitosis管理客户端并在Gitosis管理客户端相应的配置具有对应项目的协作权限。 我相信,大家能看到这个网页的已经搜索了很多网站了,其它网站只牵强的讲了步骤,而没有做出如此详细的解释,导致很多人即使有正确的安装配置步骤也无法正常安装、或者安装正确了也无法确定是否安装正确,因此看了上述描述之后有安装流程的各位应该知道怎么安装了吧!?但即便如此,也仅仅是知其然,虽然清晰的知其然也仅仅是知其然,而为什么Gitosis系统要如此设计?为何所以然?仍然不清楚。因此针对其设计思想以及详细步骤我进一步的为各位做出描述: 哥当前的情况是在Ubuntu14.04安装并设置gitosis服务器(后面简称“U服务器”),在win10上安装git bash的客户端,两台win10电脑一台作为gitosis管理客户端和Gitosis普通客户端(后面简称“A管理主机”),另外一台仅仅作为gitosis普通客户端(后面简称“B普通主机”),并以在此三台电脑间的安装、操作来进一步准确地解释gitosis如何安装、怎样算安装好了、安装好了怎么使用。 服务器架设步骤:(服务器:ubuntu 14.04): (1)ubuntu系统是默认安装有python的,但是gitosis是通过Python来安装的,并且依赖于python-setuptools工具,因此先安装python的该工具: sudo apt-get install python-setuptools (2)下载并安装gitosis 新建或者选定一个文件夹 exp: ~/src cd ~/scr git clone https://github.com/res0nat0r/gitosis.git (连接如果失效自己去Google) cd gitosis python setup.py install (3)添加用户git sudo adduser \ --system \ --shell /bin/sh \ --gecos ‘git version control‘ \ --group \ --disable-password \ --home /home/git \ git (4)由于需要根据Gitosis管理客户端生成的公钥来初始化Gitosis服务器端(A管理主机)上的gitosis(或者说Gitosis服务器端正是因为用“A管理主机”生成的公钥初始化才使得“A管理主机”成为“gitosis管理客户端”),故而需要在A管理主机上生成密钥对。 if(A管理主机.systemType == windows): 应该安装git bash,在git bash下: ssh-keygen -t rsa 这个windows下的git bash如何安装就别问哥,我们说问题关键 一路回车产生 id_rsa(私钥)与id_rsa.pub(公钥)文件 else if(A管理主机.systemType == Linux)://这个其实我没有试过,但是你们可以试一试 直接在命令行: ssh-keygen -t rsa 一路回车产生 id_rsa(私钥)与id_rsa.pub(公钥)文件 拷贝id_rsa.pub文件到U服务器的/tmp/文件下 //很多情况下还是相信U盘吧! (5)初始化gitosis sudo -H -u git gitosis-init (6)修改post-update权限 sudo chmod 755 /home/git/repositories/gitosis-admin.git/post-update 很多U服务器上的路径不一定是这个,这种情况下就:find / -name post-update 相信我,相信路易斯,你可以找到! (7)虽然在[U服务器]已经以[A管理主机]的公钥完成gitosis初始化之后,由于需要在[A管理主机]对[U服务器]进行配置,故而需要从[U服务器]克隆gitosis-admin.git到[A管理主机],以便做进一步配置: git clone git@主机名:gitosis-admin.git //其中主机名可以为[U服务器]在局域网的IP cd gitosis-admin.git 进入[A管理主机]gitosis-admin.git对[U服务器]的各个工程、各个工程的访问权限进行进一步管理。 比如,在[A管理主机]上分配John的对foo项目的权限: 在gitosis-admin.git下存在gitosis.conf(文件) keydir/(目录) 从[B主机]上拷贝[B主机]生成的公钥(在B主机上生成公钥的过程参考步骤)到[A管理主机]上,将公钥以[B主机]的名字命名拷贝到[A管理主机]的gitosis-admin.git/keydir/之下,其中[B主机]的名字可以参考生成公钥末尾的主机名: xxxx@xxxx。 进一步地配置gitosis.conf,在没有配置gitosis.conf文件的时候,该文件内容为: “ [gitosis] [group gitosis-admin] members = JewGrunhia@DESKTOP-OAR2S8U writable = gitosis-admin ”其中group代表[A管理主机]管理的Gitosis服务器上工程的群,该group为项目管理群 gitosis-admin,管理群的成员members仅仅有哥的管理主机名:JewGrunhia@DESKTOP-OAR2S8U,其权限为对gitosis-admin可以进行修改,从这儿可以看出gitosis开发者的设计思想,即gitosis管理者与普通的gitosis用户没有根本的区别,只是具有更大的权限来修改gitosis-admin项目本身而已。 创建新的项目群后的gitosis.conf文件如下: “ [gitosis] [group gitosis-admin] members = JewGrunhia@DESKTOP-OAR2S8U writable = gitosis-admin [group foo] writable = foo members = JewGrunhia@DESKTOP-OAR2S8U Jew Jewgrunhoa@DESKTOP-782FAJJ JewGrunhoa ” 新的项目名为foo,可以修改的项目为foo项目,可以访问并修改该项目的人员(member)为: JewGrunhia@DESKTOP-OAR2S8U、Jewgrunhoa@DESKTOP-782FAJJ 其中JewGrunhia@DESKTOP-OAR2S8U本身即为Gitosis管理主机,在此加入后亦可以作为Gitosis客户端加入foo项目的协作。Jewgrunhoa@DESKTOP-782FAJJ是哥的另外一台电脑,当然,对应的.pub公钥文件以“JewGrunhoa.pub”的名字拷贝到gitosis-admin.git/keydir/之下。 待gitosis.conf内容修改和keydir/目录下的公钥添加完成后,在[A管理主机]的gitosis-admin.git下输入命令: git add . git commit -am "Add foo‘s Memeber!" git push 从而使得[A管理主机]配置的内容同步到[U服务器],从而在gitosis服务器上foo下添加了JewGrunhia@DESKTOP-OAR2S8U、Jewgrunhoa@DESKTOP-782FAJJ两台主机的访问、修改权限。 各gitosis客户端可以访问、修改在gitosis服务器上允许其访问的工程,进一步的貌似只有gitosis管理客户端可以在gitosis服务器上创建项目(其它的普通gitosis客户端行不行还没有试),使用JewGrunhia@DESKTOP-OAR2S8U(本次使用中的gitosis管理客户端)添加项目foo,步骤如下: mkdir foo cd foo git init touch hellokitty.txt git add . git commit -am ‘first commit‘ git remote add origin git@192.168.0.108:foo.git //192.168.0.108为gitosis服务器在局域内的IP地址 git push origin master 从而在gitosis服务器上创建foo项目。 进一步的,在即gitosis普通客户端上访问该项目的方法为: git clone git@192.168.0.108:foo.git cd foo 修改foo/下的hellokitty.txt文件内容 git commit -am ‘Change hellokitty.txt‘ && git push 从而完成对foo.git中hellokitty.txt文件的修改并同步到gitosis服务器。 剩下的Google一下就非常容易搞定了 跨windows、Linux的Gitosis运用概念全解 标签:git gitosis 原文地址:http://6658943.blog.51cto.com/6648943/1972204
文章标题:跨windows、Linux的Gitosis运用概念全解
文章链接:http://soscw.com/index.php/essay/83146.html