Gitolite是一款Perl语言开发的Git服务管理工具。通过公钥对用户进行认证。并可以通过配置文件对些操作进行基于分支和路径的精细控制。

Gitolite採用的是SSH协议而且使用SSH公钥认证。因此不管是管理员还是普通用户。都须要对SSH有所了解。Gitolite的官网是:https://github.com/sitaramc/gitolite。以下就来细说使用Gitolite搭建Gitserver的过程吧。

硬件需求:Ubuntu电脑(或虚拟机)。正常网络訪问。

软件需求:git-core,gitolite, openssh-server, git-daemon-run(ubuntu),msysgit(windows)

在Gitolite的搭建过程中,Gitweb、Apache不是必须的,Gitweb、Apache跟Gitolite一起使用。看到的效果类似于 http://git.chromium.org/gitweb/。

1. 安装配置Gitserver(IP:10.203.138.129)

安装Git和openssh。

$ sudo apt-get install git-core openssh-server

         新建用户git,该用户作为全部代码仓库和用户权限的管理者。

$ sudo groupadd git

         $ sudo useradd git –g git –m

         $ sudo passwd git (须要设置用户git的password)

2. 下载gitolite

初始化server的全局设置,为安装gitolite做准备。

在不论什么一台机器上使用git。第一次必需要先设置user.name和user.email。

$ git config --global user.name “david”

         $ git config --global user.email “david@server-pc”(name和email任意)

安装一下python的setup tool。

$ sudo apt-get install python-setuptools

获取gitolite包。

$ git clone https://github.com/sitaramc/gitolite.git(或者到网上下载相应的gitolite)

        当然,我们也能够使用包管理器进行安装。

        $ sudo aptitude install gitolite


3. 配置gitolite

在git管理员的PC上,先安装msysgit(windows系统)。安装后,打开gitbash。执行例如以下命令生成管理员密钥:

$ ssh-keygen –t rsa

         执行以上命令后。能够默认提示直接回车。回车后在当前用户文件夹下生成了.ssh/id_rsa和.ssh/id_rsa.pub。

当中.ssh/id_rsa是私玥,.ssh/id_rsa.pub是公钥。接下来能够使用例如以下命令将git管理员的公钥上传到gitserver。也能够直接复制到gitserver。

$ scp xxx/.ssh/id_rsa.pub webgod@10.203.138.129:/tmp/admin.pub

         回到Gitserver上。

$ sudo chmod a+r /tmp/id_rsa.pub

         运行Gitolite安装。

         $ gl-setup /tmp/admin.pub

         Initialized empty Git repository in /home/repo/gitolite-admin.git/

Reinitialized existing Git repository in /home/repo/gitolite-admin.git/

         Gitolite是通过一个git仓库来管理配置文件。仓库放在/home/git/repositories/gitolite-admin.git。

设置git仓库权限

$ sudo chown git:git /home/git/repositories

         $ sudo chmod 755 /home/git/repositories

         $ sudo chmod 755 /home/git/repositories/gitolite-admin.git/hooks/post-update

4. 在server上新建測试项目仓库

在server上新建一个空的项目仓库可。叫“test”。

切换到git用户:

$ su – git

         $ cd repositories

         $ git init --bare test.git

         $ exit

         到这里,test仅仅是一个空仓库。它是不能clone下来的。

为了能做clone,必须先让管理员或有权限的人放一个初始化的版本号到仓库中。

所以,我们必须先改动一个gitolite-admin。

5. 管理gitolite的配置文件

Gitolite本身的配置也是通过git来实现的。

在刚刚上传公钥的机器上,把gitolite-admin.git这个仓库clone下来,就能够以管理员的身份改动配置了。

新建一个目录,如git129:

$ mkdir git129

         $ cd git129

         $ git clone git@10.203.138.129:gitolite-admin.git(或使用全路径)

注:訪问git用户仓库的默认路径是/home/git/repositories/

$ cd gitolite-admin

         该文件夹下的keydir文件夹是用来存放全部须要訪问gitserver的用户的ssh公钥。

各个用户依照前面提到的办法生成各自的ssh公钥文件后,把全部人的ssh公钥文件按名字又一次命名一下,然后复制到keydir文件夹下,然后改动gitolite.conf文件,做对应的配置:

[gitolite]

         [group gitolite-admin]

         writable = gitolite-admin

         members = david@DAVID-PC  tom@TOM-PC

         [group team]

         writable = test

         members = david@DAVID-PC  tom@TOM-PC  pitter@PITTER-PC

         这个配置文件表达了例如以下含有:gitolite-admin组成员有david,tom,该组对gitolite-admin仓库有读写权限;test组有david,tom,pitter三个成员,该组对test仓库有读写权限。眼下这些配置文件的改动仅仅是在本地,必须推送到远程的gitserver上才干真正生效。

增加新文件、提交并push到Gitserver:

$ git add .

         $ git commit –m “add test and someusers”

         $ git push origin master

$ sudo chmod a+r /tmp/id_rsa.pub

6. 初始化測试项目

如今server搭建完成,而且有一个空的项目test在server上。接下来,须要測试一下,空仓库是不能clone的。所以须要某个有写权限的人初始化一个版本号。

在client运行:

$ mkdir test-ori

         $ cd test-ori

         $ git init (在client运行,初始化一个本地的版本号库)

$ echo “/* add something */” > hello.c

         $ git add .

         $ git commit –m “initial version”

         $ git remote add origin git@10.203.138.129:test.git

         $ git push origin master

         到此为止,test已经有了一个版本号了,team的其它成员仅仅要先clone一下test仓库就能够了。并且gitolite.conf中赋予的读写权限。

7. 加入已有git项目

假设想将一个现成的git仓库,放到Gitserver上供team使用(比方clone了一个官方的kernel仓库,想在内部使用它作为基础仓库)。能够这样操作:

首先须要从你的工作仓库中得到一个纯仓库。比方你的工作文件夹为~/kernel,你想将该纯仓库复制到Gitserver上使用。Gitserver的管理员拿到这个纯仓库(~/kernel)后,将其复制到/home/repo/下,同一时候配置gitolite相关配置文件。比方说:下载ALSA库。

$ git clone git://android.git.kernel.org/platform/external/alsa-lib.git

$ git clone git://android.git.kernel.org/platform/external/alsa-utils.git

         生成bare库:

$ git clone --bare alsa-lib alsa-lib.git

         $ git clone --bare alsa-utils alsa-utils.git

         将bare库移动到Gitserver文件夹:

$ cp alsa-lib.git /home/repo

注意变更全部者。以获取提交权限。

         $ chown -R git alsa-lib.git

8. Gitweb和Git Daemon的支持

         Gitolite和Gitweb的整合提供了两个方面的内容。一个是能够设置版本号库的描写叙述信息,用于在Gitweb项目列表中显示。还有一个则是自己主动生成项目的列表文件共Gitweb參考,避免Gitweb使用低效率的文件夹递归搜索查找Git版本号库列表。能够在授权文件里设定版本号库的描写叙述信息,并在gitolite-admin管理库更新时创建到版本号库的description文件里。
         repo name = "one line of description"
         repo name "owner name" = "one line of description"
         第一行为名为reponame的版本号库设定描写叙述。
         第二行同一时候设定版本号库的属主名称,以及一行版本号库描写叙述。
         对于通配符版本号库。使用这样的方法就不现实了。Gitolite提供了SSH子命令共版本号库的创建者使用。
         $ ssh git@server setdesc path/to/repo.git
         $ ssh git@server getdesc path/to/repo.git
         第一条指令用于设置版本号库的描写叙述信息。
         第二条指令显示版本号库的描写叙述信息。
         Git服务由git-daemon的服务软件提供。

尽管git-daemon能够支持写操作,但由于git-daemon没有提供认证支持。因此非常少人会配置git-daemon来提供匿名的写服务。

使用git-daemon提供的Git版本号库仅仅读服务效率非常高。

故,git-daemon一直是Git版本号库仅仅读服务的首选。

假设想使用git协议,那么就须要安装git-daemon。

$ sudo apt-get install git-daemon-run

         编辑git-daemon配置文件:

$ sudo gedit /etc/sv/git-daemon/run

        

#!/bin/bash

exec2>&1

echo‘git-daemon starting.’

execchpst -ugitdaemon

“$(git--exec-path)”/git-daemon --verbose --export-all--enable=receive-pack --enable=upload-pack --enable=upload-archive --reuseaddr --base-path=/home/webgod/

说明:

--base-path      指向Gitserver的根文件夹

--enable=receive-pack

--enable=upload-pack

--enable=upload-archive

以上三个是与git-clone,git-push。git-pull相关的。

查看详情使用命令:$ man git-daemon查看。

重新启动gitserver:

$ sudo sv restart git-daemon

         在Gitserver上:

$ cd /home/webgod

         $ mkdir RepoServer

         $ cd RepoServer

         $ git init --bare manifest.git

        

         切换到其它文件夹:

$ cd ~/test

         $ git clonegit://127.0.0.1/RepoServer/manifest.git

         (è $ git clone git@127.0.0.1:/home/webgod/RepoServer/manifest.git)

这里就实现了所谓的“匿名訪问”。

转载于:https://www.cnblogs.com/claireyuancy/p/7229837.html

使用Gitolite搭建Gitserver相关推荐

  1. 版本号控制-搭建gitserver

    GitHub是一个免费托管开源码的Gitserver,假设我们不想公开项目的源码,又不想付费使用.那么我们能够自己搭建一台Gitserver. 以下我们就看看,怎样在Ubuntu上搭建Gitserve ...

  2. 搭建gitserver并实现git push 自动部署

    git push自动部署能大大提交开发部署效率 git 自动部署分为2类, git server和部署不在同一个服务器上(比如通过github部署) git server和要部署的目录在同一个服务器上 ...

  3. 使用Gitolite搭建Git服务器

    Git服务的管理工具,主要有如下几种. Gitosis- 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制.目前项目已经停止开发,不再维护. Gitolite - 轻量级,开源项目,使用 ...

  4. gitolite 搭建 Android仓库(一)

    gitolite – 搭建授权管理 平时在github上创建仓库.推拉代码.创建 Pull/Merge Request.发起 Issue . 如果是本地代码 git 只能跟踪的代码信息,无法完成如上操 ...

  5. 基于gitolite搭建轻量级git服务器

    原文地址:http://lisongze.com/2018/09/01/gitolite-gitserver/ or http://lisongze.cn/2018/09/01/gitolite-gi ...

  6. gitolite 搭建Android仓库(二)

    gitolite – 导入 Android 代码镜像仓库 平时在github上创建仓库.推拉代码.创建 Pull/Merge Request.发起 Issue . 如果是本地代码 git 只能跟踪的代 ...

  7. [原]五分钟搭建gitserver

    本来在忙一些事情,结果刚才突然收到一个临时的事情,号称很着急. 问了一下,原来是需要在本地搭建一个git库,但其实之前我是有做过gitserver的,不过是在阿里云(部分分布在青云)上,而且目前在使用 ...

  8. CentOS 7下使用Gitolite搭建Git私服

    1. 搭建环境 CentOS7, git version 1.8.3.1 2. 安装依赖包 yum install curl-devel expat-devel gettext-devel opens ...

  9. 使用 Gitolite 搭建 Git 服务器

    Gitolite 是在 Git 之上的一个授权层,依托 sshd 或者 httpd 来进行认证.(认证是确定用户是谁,授权是决定该用户是否被允许做他想做的事情). 通过 Gitolite 你可以设置访 ...

最新文章

  1. xbox无线适配器驱动_手柄杂谈,PS4手柄,Xbox手柄使用感受
  2. java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...
  3. 机器学习常用模型:决策树_fairmodels:让我们与有偏见的机器学习模型作斗争
  4. 12-Juice饮料
  5. Unable to open debugger port (127.0.0.1:**): java.net.BindException Address already in use: JVM_Bind
  6. 将本地图片生成一个网页链接(markdown)
  7. cortex系列处理器排行_ARM Cortex-M 处理器家族介绍和比较-控制器/处理器-与非网...
  8. 群表示论之Able群的不可约表示
  9. java程序员 女装_java程序员面试着装要求是什么?
  10. WinForm通过Excel作为中间介质实现导入导出小工具
  11. 文件夹如何去除SVN的标记符号
  12. AirServer 7.3.0中文版手机设备无线传送电脑屏幕工具
  13. 【51单片机】花式流水灯
  14. 测试策略与测试计划,有什么区别?
  15. 便携式明渠流量计,您了解有多少?
  16. 如何使用HTML,CSS和JavaScript创建 二进制计算器?
  17. 在TX2上编译CP2102驱动
  18. IPhone程序发布到应用程序商店的流程
  19. Hyperf插件之passport认证插件richard8768/hyperf-passport
  20. 2021副高考试成绩查询黑龙江,2021年黑龙江省考成绩查询入口|成绩查询时间

热门文章

  1. js中的面向对象入门
  2. 谷歌逐步取消对IE6的支持
  3. java dll 乱码_java调用c++ dll出现中文乱码 | 学步园
  4. Your CPU supports instructions that this TensorFlow binary was not compiled to use AVX AVX2
  5. Visual Studio属性配置中使用宏
  6. Linux静态库和动态库学习总结
  7. vivox7刷linux系统,Vivo 找来宋仲基帮你送 X7
  8. AUTOSAR从入门到精通100讲(三十八)-通信网络中的⽐特和帧同步技术
  9. 少儿编程100讲轻松学python(三)-python如何重命名文件
  10. 如何做好内容策划并完成一篇合格的深度文?