git server搭建成功 & repo

搭建本地repo服务器(本人亲自验证通过)

首先得确保本地的git能够正常使用,并下载一个repo可以正常运行
目录结构如下:

首先新建一个文件夹repo-server,并在其下新建两个目录,如上图所示
在manifest.git文件夹中执行 git init 初始化一个git 库并添加default.xml
其中比较重要的是manifest.git文件夹中的default.xml,该default.xml的内容如下:
 <?xml version="1.0" encoding="UTF-8"?>
<manifest>
    <remote name="repo-server" fetch="/home/Neo/repo/repo-server" review="review.source.Android.com" />
    <default revision="master" remote="repo-server" />
    <project name="project/project1" path="project/project1"/>
    <project name="project/project2" path="project/project2"/>
</manifest>
其中fetch就是你在服务器端所在的位置,可以是远程的,也可以是本地的,我这里设置的是本地的
客户端与服务器同步就是依靠这个地址进行repo sync的
其中default标签是用来设置分支名和远端服务器默认名的
接下来的project标签就是你要通过repo来管理的git库位置了
添加完毕后执行git add -A添加到缓冲区,再通过git commit -m "Init"添加到仓库中去(这些都是基本的git操作,这里不做详述)
manifest.git的文件列表


配置好服务器端之后,通过同样的方式建立project1和project2两个git库

客户端:
在repo-client文件夹下执行
repo init -u server_path
这个server_path是default.xml所在的目录路径
我的server_path是/home/Neo/repo/repo-server/manifest.git
所以我应该执行:
repo init -u /home/Neo/repo/repo-server/manifest.git
如果提示下面的错误:
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 101] Network is unreachable
这说明网络连接有问题,而你确认你网络没有问题的话,那就多连几次吧,会好的(G.F.W)
结果如下:

[root@SVR6 repo-client1]# repo init -u /home/Neo/repo/repo-server/manifest.git/

[root@SVR6 repo-client1]# repo sync

转载网址:http://www.linuxidc.com/Linux/2013-04/83563.htm


配置repo服务器

 

直从公司的服务器上用repo sync拉代码,今天得空,也想尝试着自己在本机上搭建个repo server试试。

上网搜了一堆教程。。。好多都是copy的,折腾了半天,终于成功,特此分享。Ubuntu12.04下亲测。

1. 之前写过一篇在本机搭建Git服务器的文章(见 http://www.linuxidc.com/Linux/2012-09/71400.htm ),当时是需要在Server里添加Client的ssh keygen信息,Client才能访问的,这次,借助与git-daemon ,配置之后,外部Client就都能访问了,首先在Ubuntu里安装 git-daemon:(我之前已经装好Git了)

$ sudo apt-get install git-daemon

2. 然后在主目录下新建文件夹 RepoServer 并进入:

$ mkdir /home/ritterliu/RepoServer

$ cd /home/ritterliu/RepoServer

3. 新建manifest.git,用来存放repo下载代码所依据的xml文件:

$ git init --bare manifest.git

4. 此时可以将想要被分享的被git管理的工程拷贝至此目录,例如,我将自己eclispe工作区里的AngryBird5和DLNA拷贝至此目录下:

$ cp -r /work/workSpace/AngryBird5 .

$ cp -r /work/workSpace/DLNA .


注意这两个工程都要被git管理,并提交过才行,也可以在此时进入工程,执行git init,git add,git commit操作。

5. 现在先放下这个目录不管,去配置下git-daemon的执行路径,需要root权限:

$ sudo su

# vi /etc/sv/git-daemon/run

将 /etc/sv/git-daemon/run 文件配置为如下内容

#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
   "$(git --exec-path)"/git-daemon --verbose --export-all --base-path=/home/ritterliu/

重启git-daemon:

# sv restart git-daemon

6. 然后在其他任意目录clone出manifest.git,此时为空,会clone出一个manifest空文件夹:

$ mkdir /home/ritterliu/clone

$ cd /home/ritterliu/clone

$ git clone ritterliu@127.0.0.1 :/home/ritterliu/RepoServer/manifest.git

7. 进入manifest文件夹,并新建如下的default.xml文件:

$ vi default.xml

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <remote name="korg"  fetch="git://192.168.10.1/RepoServer" review="review.source.Android.com" />
   <default revision="master" remote="korg" />
   <project path="AngryBird5" name="AngryBird5" />
   <project path="DLNA" name="DLNA" />
</manifest>


其中 fetch="git://192.168.10.1/RepoServer 中填本机的ip地址,project 处是刚才在/home/ritterliu/RepoServer中添加的想被分享的工程。

然后依旧是git add,git commit ,git push系列操作,最后一定要记得git push,把增加的default.xml变化push到manefest.git里:

$ git add .

$ git commit -a -m "add default.xml"

$ git push origin master

8. 此时,Server端就完全配置好了,去别的机子上,新建文件夹,下载repo,然后执行repo init即可:

$ mkdir /home/ubuntu/download

$ cd /home/ubuntu/download

url https://dl-ssl.google.com/dl/googlesource/git-repo/repo > repo
$ chmod +x repo

$ ./repo init -u git://192.168.10.1/RepoServer/manifest.git

此处如果出现 fatal: unable to connect a socket (Connection refused) ,通常是在git-daemon或default.xml中配置路径出错。

最后同步下代码:

$ ./repo sync

如果出现 error: revision master in AngryBird5 not found ,应该是工程未commit过导致的。

 

reference:http://www.linuxidc.com/Linux/2012-09/71401.htm

 

虽然之前弄过了svn,但是最近,老大又要求使用git来进行版本控制。好吧,暂停下手上的项目,折腾下Git吧。

学习的资料就是progit的ebook,写的真的是很好很详细。强烈推荐移步progit去学习下。ebook的最下方可以选择语言,有中文版的。

因为是几个人一起开发的项目,所以就配置了一个私有小规模团队的git。所谓私有,就是每个人都具有读写权限,且不对外公开。所以采用SSH公钥来进行授权。

假设项目中有3个人:

ritter ip:192.168.1.1, tom ip:192.168.1.2 ,jack ip:192.168.1.3。其中ritter的机子为git服务器。

首先,每个人获得自己的ssh公钥,每个人先装ssh:

$ sudo apt-get install openssh-client

$ sudo apt-get install openssh-server


然后执行ssh-keygen命令生成ssh公钥:

$ ssh-keygen


输入完命令后可能会要求输入一些配置信息,可以不输,一路回车到底。

现在,在~/.ssh目录下应该就有一个叫 id_rsa.pub的文件了,用gedit打开:

$ gedit ~/.ssh/id_rsa.pub

将每个人的id_rsa.pub里的内容复制到ritter的~/.ssh/authorized_keys 文件中,包括ritter自己在id_rsa.pub里的内容。

如果在ritter的~/.ssh 目录下没有 authorized_keys文件,可以自己用gedit 新建一个:

$ gedit ~/.ssh/authorized_keys

然后把每个人的id_rsa.pub中的内容拷入即可。这样就配置好了ssh公钥了,只要是在authorized_keys里有公钥的用户,都可以对git仓库读写。

下面就是配置ritter的git仓库了,假如在/work目录下新建project.git:

$ sudo mkdir /work

$ cd /work

$ mkdir project.git

$ cd project.git

进入project.git目录后,可以用 --bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库:

$ git --bare init

这是,会提示初始化完成,然后就是要向这个裸仓库中加入文件了。


假如是由tom将自己的一个工程 myProject加入仓库中,首先,要进入myProject:

$ cd myProject

使用git init命令将此工程变为git版本控制的目录:

$ git init

执行成功后可以用ls -a命令查看,会有一个隐藏的.git目录,里面就是存储版本控制信息的。

然后执行git add .,注意,add后是空格,然后是一个点,此命令将当前目录下所有文件添加进入暂存区域中去:

$ git add .

此时还需要commit,加参数m后可以加入注释信息:

$ git commit -m 'initail commit'

现在本地的快照就更新了,然后发送到ritter的git服务器里:

$ git remote add origin ritter@192.168.1.1:/work/project.git

其中的origin是自己自定义命名的在git仓库中的分支的名称,此时再push一下,更改就成功了:

$ git push origin master

origin是刚才命名的位于ritter机器中的git服务器里的分支的名称,而master是本地存储的分支的名称,是git init后默认生成的名字。

上面的命令就是将本地分支master里的修改应用进ritter的git服务器里的origin分支里去。至此,git服务器的代码仓库就配置好了。

下面,如果jack要参与开发,就从ritter那clone下来一份代码,假如clone到自己在~/jackProject里,首先进入jackProject目录:

$ cd ~/jackProject

然后执行clone命令:

$ git clone ritter@192.168.1.1:/work/project.git

执行完成后,ritter机子里,刚才tom上传进去的myProject就下载到jack的jackProject目录里了,当然,在clone命令后面可以加上自定义的文件夹名称,

假如要重命名为project:

$ git clone ritter@192.168.1.1:/work/project.git project


这样就可以了。

ritter自己也要参与开发的话,也可以clone到自己的开发目录下面,方法相同。

原文链接:http://www.linuxidc.com/Linux/2012-09/71400.htm

 

repo 查看最新5days项目更新

$repo forall -p -c  git log --since='5 days ago'

安装配置git服务器

$sudo apt-get install git-core openssh-server
$sudo apt-get install git-core openssh-client
$sudo apt-get install python-setuptools

添加用户git, 该用户将作为所有代码仓库和用户权限的管理者:

$ sudo useradd -m git

$ sudo passwd git(设置git管理者用户密码)

建立git仓库:
$ sudo mkdir /home/git/repositories
让除了git以外的用户对此目录无任何权限:
$ sudo chown git:git /home/git/repositories
$ sudo chmod 755 /home/git/repositories  

2、安装gitosis:
$ sudo apt-get install python-setuptools
$ sudo git clone
https://github.com/res0nat0r/gitosis.git  // 下载Gitosis的源代码
$ cd gitosis

howie@ubuntu-12-04:/tmp/gitosis$ sudo python setup.py install


3、生成ssh公钥

$ ssh-keygen -t rsa

默认回车,保存到当前用户的主目录下

howie@ubuntu-12-04:/tmp/gitosis$ cp /home/howie/.ssh/id_rsa.pub  /tmp/id_rsa.pub

howie@ubuntu-12-04:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub


4、让gitosis运行起来

howie@ubuntu-12-04:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub

Initialized empty Git repository in /home/repositories/gitosis-admin.git/

Reinitialized existing Git repository in /home/repositories/gitosis-admin.git/


5、添加可执行权限

howie@ubuntu-12-04:/tmp/gitosis$ su

root@ubuntu-12-04:/tmp/gitosis# cd /home/git/repositories/gitosis-admin.git/

root@ubuntu-12-04:/home/git/repositories/gitosis-admin.git# chmod 755 /home/repo/gitosis-admin.git/hooks/post-update

root@ubuntu-12-04:/home/git/repositories/gitosis-admin.git# exit


三、在服务器上新建一个测试项目仓库

1、我们在服务器上新建一个空的项目仓库,叫“trunk”。

切换到git用户:

howie@ubuntu-12-04:/home/git$ su git

$ cd /home/git/repositories

$ mkdir trunk.git

$ cd trunk.git

$ git init --bare     

注:这是在服务器上运行的,初始化一个根级的git仓库

$ exit


四、管理gitosis配置文件

1、clone仓库gitosis-admin.git

howie@ubuntu-12-04:/home/git$ cd ~

howie@ubuntu-12-04:~$ mkdir work

howie@ubuntu-12-04:~/work$ git clonegit@<server ip>:gitosis-admin.git

或者howie@ubuntu-12-04:~$ git clonegit@<server ip>:/home/git/repositories/gitosis-admin.git


2、添加git服务器的用户,并生成ssh公钥


howie@ubuntu-12-04:~/work$ sudo useradd -m b

howie@ubuntu-12-04:~/work$ sudo passwd b

howie@ubuntu-12-04:~/work$ su b

$ ssh-keygen -t rsa(默认在用户b的主目录下)

$ exit


howie@ubuntu-12-04:~/work$ su

root@ubuntu-12-04:/home/howie/work# cp /home/b/.ssh/id_rsa.pubgitosis-admin/keydir/b@ubuntu-12-04.pub

root@ubuntu-12-04:/home/howie/work#exit


3、修改gitosis.conf文件,配置如下:

[gitosis]

[group gitosis-admin]

members = howie@ubuntu-12-04

writable = gitosis-admin


[group developers]

writable = trunk

members = howie@ubuntu-12-04b@ubuntu-12-04


4、加入新文件、提交并push到git服务器:

howie@ubuntu-12-04:~/work$ cd gitosis-admin

howie@ubuntu-12-04:~/work/gitosis-admin$ git add .

howie@ubuntu-12-04:~/work/gitosis-admin$ git commit -am “add trunk prj and users”

howie@ubuntu-12-04:~/work/gitosis-admin$ git push origin master


五、初始化测试项目

1、初始化一个版本

howie@ubuntu-12-04:~/work$ mkdir trunk-ori

howie@ubuntu-12-04:~/work$ cd trunk-ori/

howie@ubuntu-12-04:~/work/trunk-ori$ git init          

注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库

howie@ubuntu-12-04:~/work/teamwork-ori$ echo “hello world!” > hello

howie@ubuntu-12-04:~/work/teamwork-ori$ git add .

howie@ubuntu-12-04:~/work/teamwork-ori$ git commit -am “initial version”

howie@ubuntu-12-04:~/work/teamwork-ori$ git remote add origingit@<server ip>:trunk.git

或者howie@ubuntu-12-04:~/work/teamwork-ori$ git remote add origingit@<server ip>:/home/git/repositories/trunk.git

howie@ubuntu-12-04:~/work/trunk-ori$ git push origin master


2、clone trunk仓库

howie@ubuntu-12-04:~/work/teamwork-ori$ su b

$ cd /home/b

$ git clone git@<server ip>:trunk.git

$ cd trunk

$ vim hello

$ git add .

$ git commit -am “b add”

$ git push origin master

$ exit

3、git 恢复文件到历史版本

$git reset commit_id 文件路径
$git checkout -- 文件路径

reference: http://blog.csdn.net/yuan892173701/article/details/7775002
http://871421448.iteye.com/blog/1912205

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值