
以GIT和SVN为例:
①SVN:只有一台服务器,其他计算机都是客户端。所有的客户端想要上传数据,下载数据都需要经过服务器。SVN服务器的负载压力大,要求网络畅通。一旦服务器挂掉,那就悲剧了。要么从备份服务器上还原,要么只能慢慢从大家手里收集最新的文件。
GIT:每一台计算机都是服务器。Git可以建立树状的结构,每一台Clone了库的计算机都包含完整的数据。我们可以以该库为服务器,继续进行下载。Git服务器可以在本地进行提交,不需要联网。只需要在网络畅通时push一次即可。一旦服务器挂掉,可以立刻找其他电脑充当服务器。
②Git的Commit是不需要提交到服务器的,每个人可以在自己的计算机上做各种提交版本,不需要考虑其他用户修正的内容。只需要在Push的时候执行一次Merge *** 作即可。类似于分布式计算中,将大量的工作拆解成小的工作,最后进行一次汇总即可。
gitlab原理:
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
其实,说直白点写,他就是个git服务器,和github差不多,只不过,这个gitlab可以下载到本地进行搭建,代码存在本地服务器上,而不是放在远端的github上。
二者相比较如下:
gitlab github
安全性 代码存在本地,自行管控 代码存在远端,厂商管控
私密性 代码能见度自行设置 免费的代码完全开放,付费的代码隐藏
成本 运维成本 代码隐藏
综上述:
要是企业中有服务器,建议搭建gitlab,毕竟代码放到自己这安心些
当然要是自己公司写的的代码不重要的话,可以放到免费版github上
Gitblit是是一个分布式版本控制系统。
Github 是 一个网站,可以为用户提供空间创建git仓储,用来保存一些数据。
Gitblit服务现在独树一帜,相比与SVN有更多的灵活性,最流行的开源项目托管网站Github上面,如果托管开源项目,那么就是免费使用的,但是闭源的项目就会收取昂贵的费用,如果你不缺米,那么不在本文讨论的范围内,既然这样,我们可以自己搭建我们的Git服务器。 国内使用Windows Server平台的用户占大多数,那么本文就来讨论如何在Windows平台下搭建Git服务器。
GitHub 是一个面向开源及私有 软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。 GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。
Git服务的管理工具,主要有如下几种。
Gitolite 使用perl语言编写,维护和更新比较积极,下面测试使用Gitolite搭建Git服务器。
一般新建用户 ~/ssh/ 目录是不存在的。
生成路径会在ssh-kengen执行后给出,也可修改。windows下生成路径默认位于 C:/user/用户名/ssh 下。
此时, gitolite 会初始化两个仓库,同时创建 authorized_keys 文件
管理库中有两个目录, conf/ 和 keydir/ 。
仓库的创建通过编辑 gitolite-admin/conf/gitoliteconf 即可,然后将配置后的文件上传服务器。
若本地已有仓库repo2,将其添加到服务器
gitolite可以通过用户组的方式进行管理
如上提示,需要输入密码。
需要安装 openssh ,并将 gitolite 用户添加在 sshusers 组中,有的服务器可能是 ssh 组。
计算机领域的Cookbook指的是实用经典案例的意思,是对一些普遍性问题的解决方案的总结和整理。
这个东西如楼下那个培训班的伙计所说;
关于它的版本在win上有俩,就是安装版与便携版;
安装版:顾名思义,就是普通的安装版本,只提供一个安装包,打开后便是安装引导程序,通过手动选择,可以完成程序的环境变量自动配置与注册表信息自动补入。
便携版:也是顾名思义,就是专门为方便移动而打包的,提供的是一个压缩包,压缩包内是完整的程序,需要计算机玩家们手动配置注册表与环境变量(这也不是必要的,只是方便使用),这也是可以用网上流行的“绿色版”、“免安装版”等词同意。
1 架设Git服务器我们以Ubuntu为例。首先,在git服务器上创建一个名为 'git' 的用户,并为其创建一个ssh 目录。并将其权限设置为仅git用户有读写权限
$ sudo adduser git
$ su git
$ cd
$ mkdir ssh
$ chmod 700 ssh
接下来,把开发者的 SSH 公钥添加到这个用户的 authorized_keys 文件中。假设你通过电邮收到了几个公钥并存到了临时文件里。重复一下,公钥大致看起来是这个样子:
$ cat /tmp/id_rsajohnpub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair
只要把它们逐个追加到 authorized_keys 文件尾部即可,同时将authorized_keys设置为仅git用户有读写权限。
$ cat /tmp/id_rsajohnpub >> ~/ssh/authorized_keys
$ cat /tmp/id_rsajosiepub >> ~/ssh/authorized_keys
$ cat /tmp/id_rsajessicapub >> ~/ssh/authorized_keys
$ chmod 600 ~/ssh/authorized_keys
现在可以用 --bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。
$ cd /opt/git
$ mkdir projectgit
$ cd projectgit
$ git --bare init
这时,Join,Josie 或者 Jessica 就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过 shell 登入主机并创建一个裸仓库目录。我们不妨以 gitserver 作为 git 用户及项目仓库所在的主机名。如果在网络内部运行该主机,并在 DNS 中设定 gitserver 指向该主机,那么以下这些命令都是可用的:
# 在 John 的电脑上
$ cd myproject
$ git init
$ git add
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/projectgit
$ git push origin master
这样,其他人的克隆和推送也一样变得很简单:
$ git clone git@gitserver:/opt/git/projectgit
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
用这个方法可以很快捷地为少数几个开发者架设一个可读写的 Git 服务。
作为一个额外的防范措施,你可以用 Git 自带的 git-shell 工具限制 git 用户的活动范围。只要把它设为 git 用户登入的 shell,那么该用户就无法使用普通的 bash 或者 csh 什么的 shell 程序。编辑/etc/passwd 文件:
$ sudo vim /etc/passwd
在文件末尾,你应该能找到类似这样的行:
git:x:1000:1000::/home/git:/bin/sh
把 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的实际安装路径)。该行修改后的样子如下:
git:x:1000:1000::/home/git:/usr/bin/git-shell
现在 git 用户只能用 SSH 连接来推送和获取 Git 仓库,而不能直接使用主机 shell。尝试普通 SSH 登录的话,会看到下面这样的拒绝信息:
$ ssh git@gitserver
fatal: What do you think I am A shell
Connection to gitserver closed
这里提供的方法,组内所有成员对project都有读写权限,也就是说每个分支都可以push代码,如果需要更加细致的权限控制,请使用Gitosis或者Gitolite。
2 搭建Gitweb
安装gitweb之后就可以通过网站访问我们的项目了。就像>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)