1.代码库中保存的数据在用户repo sync的时候会checkout出来,所以代码库的形式都是一个一个git文件夹
2. .ssh文件夹中一个id_rsa,id_rsa.pub
id_rsa:私钥文件,是基于RSA算法创建的,要妥善保存,不要泄露
id_rsa.pub公钥文件,与私钥文件是一对,可以公开
3.Gitolite
在服务器上创建root用户,然后使用root权限创建git用户
Sudo adduser --system --shell /bin/bash --group git
Sudo passwd git
*注意git用户的主目录/home/git 的owner一定要是git本身,否则在使用ssh的时候还是会提示输入密码。
在远程连接到git用户的时候,先ssh到root再su git即可。
4.创建gitolite服务器
(1)git clone git://github.com/sitaramc/gitolite
(2)mkdir -p $HOME/bin
(3)gitolite/install -to $HOME/bin
(4)ssh-keygen -t rsa(已经生成了public key就不需要再执行)
(5)cp ~/.ssh/id_rsa.pub admin.pub
(6)gitolite setup -pk admin.pub
至此gitolite已经装好了,在git主目录下会生成repository目录其中有gitolite-admin.git 这个是用来进行项目管理的文件夹,其中的conf中的文件是进行人员管理的配置文件,keydir中存放的是所有可以下代码的人员的key文件。
一般进行项目管理我们不会直接在代码目录进行,可以在代码服务器直接拉取gitolite-admin文件夹,然后将自己要操作的机器的key添加进去。之后就可以在管理员自己的机器上进行管理。
5.添加项目
(1)如果只是一个单一的git库,只需要在conf文件中添加这个git库的名字即可
(2)我们一般做的项目都是android项目,所以项目都是以文件夹的形式存在,具体配置可见如下截图:
testing就是一个单一的git库,l8909就是一个完整的Android项目。
创建一个git仓库示例:
(1)在代码服务器的repository文件夹中创建目录eg:amss
mkdir amss.git
cd amss.git
git init --bare
现在我们创建了一个空库
(2)在管理员的机器将空的代码库拉下来
1.建立一个新的空的工程
git clone git@代码服务器地址:amss(相对于repository的目录位置)
发现本地clone下来了amss文件夹,我们要进行init操作。
cd amss
echo init amss > Readme
git add .
git commit -m “init amss repository”
git push origin:master(第一次提交使用这个命令,如果直接git push会报错)
现在新的工程已经建立完毕。
2.将现有的代码push到新建的工程
有的时候我们要新建一个库,但是我们本地之前已经有了代码提交。所以我们要使用下面的方法来执行:
代码服务器已经建立好了amss.git但是没有任何提交,这时候我们本地有一份amss代码,我们可以直接将它push到代码服务器,步骤如下:
(1)进入我们本地的代码目录
(2)git remote add origin git@代码服务器地址:amss.git
(3)git checkout -b xxx (拉一个xxx分支)
(4)git push origin xxx:ooo(ooo是你希望在代码服务器的分支的名字)
这样就已经将本地的代码提交到了服务器
6.将从高通拉的项目直接做成自己的代码初始项目
Android项目代码我们从高通获得,管理员在初始拉代码的时候可以直接使用--mirror
eg:repo init xxxxx -b xxxx --repo-url=xxx --repo-branch=xxx --mirror
这样下载下来的就可以直接作为我们初始的代码库。
repo是根据manifest来下载代码的所以我们还需要修改
新的repo在remote fetch需要写为ssh://服务器地址。