搭建一个简单的GIT版本管理 Gitolite 服务器

Title: 搭建一个简单的GIT版本管理Gitolite服务器


1  GIT准备工作——安装系统需要的软件包
在搭建GIT版本管理服务器之前,需要做些基本的准备工作

1.1 安装编译android依赖的运行环境
(1) 新建install_env_for_android.sh,在文件中输入如下内容
#! /bin/bash
# Install for 64-bit ubuntu linux environment compiling android what follow:
apt-get install -y git-core
apt-get install -y gnupg
apt-get install -y flex
apt-get install -y bison
apt-get install -y gperf
apt-get install -y build-essential
apt-get install -y zip
apt-get install -y curl
apt-get install -y zlib1g-dev
apt-get install -y gcc-multilib
apt-get install -y g++-multilib
apt-get install -y libc6-dev-i386
apt-get install -y lib32ncurses5-dev
apt-get install -y ia32-libs
apt-get install -y x11proto-core-dev
apt-get install -y libx11-dev
apt-get install -y lib32readline5-dev
apt-get install -y lib32readline-gplv2-dev
apt-get install -y lib32z-dev

# Change GCC version for android, instead 4.4 for 4.6
apt-get install -y gcc-4.4
apt-get install -y g++-4.4
apt-get install -y g++-4.4-multilib

(2) 执行这个文件需要root权限,./install_env_for_android.sh,会自动安装完文件中的所有的软件包
(3) 更改GCC编译器,系统ubuntu12.04默认的编译其是4.6,我们需要改为4.4
$ cd /usr/bin/;ll g++*
会看到有4.4和4.6两个版本,使用如下命令把g++编译器指向4.4
$ mv g++ g++.bak
$ ln -s g++-4.4 g++
同理,gcc编译器也需要指向4.4
$ cd /usr/bin/;ll gcc*
$ mv gcc gcc.bak
$ ln -s gcc-4.4 gcc
最后,使用下面的命令来察看工具的版本是否已经改好了
$ gcc -v
$ g++ -v

1.2 配置JAVA运行的环境变量
(1)下载jdk-6u30-linux-x64-.bin.tar.gz安装包
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-1836443.html
解压并运行它,可以得到一个JAVA解压的目录jdk1.6.0_30
$ mv jdk1.6.0_30 /opt/

(2)创建文件/etc/profile.d/java.sh,输入以下内容
export JAVA_HOME=/opt/jdk1.6.0_30
export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

# Configure GIT server env for system.
git config --global core.editor "vim"
git config --global user.name "Alex"
git config --global user.email xxx@163.com

git config --global color.status auto
git config --global color.diff auto
git config --global color.commit auto
git config --global color.branch auto
git config --global color.ui auto
git config --global color.interactive auto

(3)java.sh后半部分是配置GIT服务器的环境变量,就是是的在登陆系统的时候,.bashrc会自动的去初始化这些命令
当然了,也可以手动执行这个文件./java.sh即可
(4)到这里,已经可以对系统进行编译了,此处不做详细分析,我们重点讲的是GIT版本对源码的管理,同时
我们也已经可以对GIT进行简单的操作了




2  GIT版本管理基本操作方法
下面是创建版本库的部分基本简单命令,用来创建一个基本的版本库

2.1 创建一个基本的版本库
(1)初始化版本库
创建版本库android23,新建目录android23,再在目录里初始化版本库
$ mkdir android23
$ git init

(2)在android23目录下创建忽略文件 .gitignore,注意文件名前面有点号
$ touch .gitignore

(3)在.gitignore文件中输入下面内容
*~
*.swp
*.c.ba*
*.c-ba*
*.c-*ba*
*.h.ba*
*.h-ba*
*.h-*ba*
*.c-*
*.c_
*.c__
*.h-*
*.h_
!/.gitignore

(4)!/.gitignore 表示不要忽略这个文件,要纳入版本管理中
(5)把整个源码添加入版本库
$ git add -A
(6)提交版本说明下面命令二选一,文件太多建议使用第二条指令
$ git commit
$ git commit -m "xxxx"
(7)这样一个本地的版本库就成功的建立了
(2)可以查看提交日志情况
$ git log


参考推荐学习GIT书籍《GIT权威指南》,作者:蒋鑫,机械工业出版社


3  Linux系统多用户创建和公钥的生成
创建专门的管理android SDK源码的系统账户os-git
目的:创建系统账户os-git做为源码管理GIT账户,创建os-test作为普通用户下载和修改源码测试,管理员用户alex
说明:搭建GIT版本管理服务器,通过创建多用户途径实现,专门的GIT管理账户,测试用户,这样可以实现局域网对版本的共同维护

3.1 创建系统管理源码的GIT版本管理账户os-git(注意:需要root权限)
(1)添加用户os-git
$ useradd os-git

(2)创建用户组os-group
$ groupadd os-group

(3)查看新建组os-group的ID
$ cat /etc/group
会看到如下内容
os-group:x:1002:alex,os-git,os-test
ID是1002

(4)修改os-git的属组为os-group
$ cat /etc/passwd
可以查看到如下内容
os-git:x:1001:1002::/dev_data/os-git:/bin/bash
账户os-git的ID为1001,属组ID是os-group的ID 1002,用户登录的HOME目录是/dev_data/os-git,
登录shell使用的是bash

(5)设置账户os-git的密码
$ passwd os-git
两次输入相同的要设定的密码即可

(6)在目录/dev_data下创建os-git的HOME目录
$ cd /dev_data;
$ mkdir os-git
然后需要修改目录权限为属主os-git,属组os-group
$ chown os-git:os-group os-git -R

(7)要使得一登录系统账户os-git就能马上正常进入bash shell,还需要做一步工作
$ cp /home/alex/.profile   /home/os-test/
$ cp /home/alex/.bashrc    /home/os-test/

(8)同样的方法,要把alex, os-test账户也要添加入组os-group
$ cat /etc/passwd
能得到如下效果
alex:x:1000:1002:alex,,,:/home/alex:/bin/bash
os-git:x:1001:1002::/dev_data/os-git:/bin/bash
sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin
os-test:x:1002:1002::/home/os-test:/bin/bash

$ cat /etc/group
os-group:x:1002:alex,os-git,os-test


3.2 Install SSH server
检查是否已经安装有SSH服务器端的软件包
$ ps -e | grep ssh
如果有sshd进程就说明已经安装好了,如果没有就需要安装,命令如下
$ apt-get install -y openssh-client
$ apt-get install -y openssh-server
安装好之后,需要启动下服务
$ service ssh stop
$ service ssh start
此时,再查看下进程看下,应该就有sshd了
SSH配置的服务端口在这个文件,默认是22
$ vi /etc/ssh/sshd_config

3.3 生成公钥/私钥对
这一步很重要,需要这个来免密码登录远程账户
$ cd ~
$ ssh-keygen
一路回车即可
完成后,你会在账户主目录下找到这个目录
$ ll ~/.ssh/
id_rsa,id_rsa.pub这两个就是私钥和公钥


3.4 测试使用ssh远程登录其他账户
先查看下自己电脑的IP
$ ifconfig eth0
可以看到本机IP地址是192.168.9.2,然后使用下面方式在alex远程登录os-test账户空间
alex@android:~/android/clock_DOC$ ssh os-test@192.168.9.2
$ scp j2se6.zip os-git@192.168.9.2:up_git/
$ ssh-copy-id -i .ssh/id_rsa.pub os-test@192.168.9.2
到这里,问题应该不大了



4  gitolite服务器的搭建


4.1 搭建gitolite服务器
(1)登录os-git账户使用root安装gitolite
$ apt-get install -y gitolite

(2)把alex账户设置为管理员admin账户
$ cp alex@192.168.9.2:.ssh/id_rsa.pub  /tmp/alex.pub
(3)以alex.pub为公钥创建gitolite-admin.git
$ gl-setup /tmp/alex.pub
注意:这里不需要使用root权限,生成的gitolite-admin.git会在当前用户的HOME目录下生成版本库

(4)回到alex账户登录,尝试下载版本库
$ git clone os-git@192.168.9.2:gitolite-admin.git

(5)如果中途出现警告
`Agent admitted failure to sign using the key.`
可以使用下面方法解决(in current account)
$ ssh-add .ssh/id_rsa

4.2 授权创建新的版本库
(1)在alex账户下创建新的版本库
因为gitolite-admin.git版本库是以alex的公钥来创建的,所以alex具有至高无上的操作权限

(2)文件conf/gitolite.conf
$ vi gitolite-admin/conf/gitolite.conf
@admin          = alex
@os-group       = alex os-test

repo    gitolite-admin
       RW+     = alex

repo    testing
       RW+     = @all

repo    users/CREATOR/.+
       C       = CREATOR
       RW      = @os-group

repo    shared
       RW+     = @admin
       RW      = @os-group

repo    upgit/.+$
       C       = @admin
       RW      = @os-group


(3)给用户分组,并指定各个版本库的操作权限
@admin          = alex
@os-group       = alex os-test

(4)直接自动创建版本库
repo    shared
       RW+     = @admin
       RW      = @os-group
检查是否有版本库shared,如果有,则什么也不做,如果没有就自动创建版本库shared.git
注意repo    shared后面是没有.git的

(5)创建用户自己的版本库空间
repo    users/CREATOR/.+
       C       = CREATOR
       RW      = @os-group

$ mkdir test1
$ cd test1/
$ git init
$ touch aa gg hh
$ git add -A
$ git commit
$ git remote add origin os-git@192.168.9.2:users/os-test/test1.git
$ git push origin master
$ git remote -v
$ git log

(6)创建通配符版本库
repo    upgit/.+$
       C       = @admin
       RW      = @os-group

And push remote.
In account os-git edit this file below
$ vi /dev_data/os-git/.gitolite.rc
Change  `$GL_WILDREPOS = 1;`  this value 0 to 1;
$ cd clock_DOC
$ git remote add os-git@192.168.9.2:upgit/clockdoc.git
$ git push origin master
Can create remote path success.

(7)注意创建通配符版本库和创建用户自己的版本库空间的区别
区别主要在于后面要不要`$`符号,切记小心


5  创建版本库,从版本库下载源码
下载测试
git clone os-git@192.168.9.2:users/os-test/test1.git
git clone os-git@192.168.9.2:shared.git
git clone os-git@192.168.9.2:upgit/clock_DOC.git

为了更好的学习和测试版本库,还可以通过os-test来下载,修改,提交等操作来进行验证

这里讲的也只是GIT版本管理的冰山一角,如果有兴趣的朋友,自己深入去学习GIT相关的知识,谢谢!
参考书籍:《GIT权威指南》,作者:蒋鑫,机械工业出版社
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fttony2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值