基于gitosis管理的 git 仓库恢复/迁移

        项目开发中难免会遇到服务器出问题的突发事件,这事我也得经历,突然git服务器崩溃,据说是磁盘陈列不干活了,服务器上面的数据都没了,还好代码已经用git管理,所以也没有惊慌失措,每个同事都有本地仓库,恢复应该是没什么问题,虽说恢复代码仓库没什么问题,但对于菜鸟的我来说,还是花费了一天时间才搞定,因为之前搭建git仓库的同事离职,只能自己从网上找资料,现简单记录一下流程,详细操作网上太多大神有作品,以便下次方便查找。

参考1: git gitosis 安装CentOS下的Git服务器:Gitosis - csensix的个人空间 - OSCHINA - 中文开源技术交流社区详细介绍如何在CentOS上配置Gitosishttps://my.oschina.net/csensix/blog/184426

参考2:git 仓库迁移(裸库,没有工作区)Git - 在服务器上搭建 Githttps://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git

服务器系统: CentOS 6.4

1.安装 git gitosis

// 同时安装 python python-setuptools git
yum install -y python python-setuptools git-core

// 克隆 gitosis, gitosis 依赖 python python-setuptools
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install

2.配置 gitosis

// gitosis 管理者在自已电脑(不是服务器)生成 ssh 钥匙对,用于初始化 gitosis, 主要是方便以后管理成会不用频繁登录服务器
ssh-keygen -t rsa
// 上传管理员的公钥到服务器
scp ~/.ssh/id_rsa.pub root@xxx:/tmp/

#在服务器上新建一个git用户
useradd -m git
// 切换到 git 用户操作
su - git
// 用管理员的 ssh 公钥初始化 gitosis
gitosis-init</tmp/id_rsa.pub

3.管理 git 远程仓库

// git 管理员在pc上克隆 gitosis-admin 仓库
git clone git@xxx.xxx.xxx.xxx:gitosis-admin.git

//然后可以配置团队成员仓库权限

4.迁移仓库

// 从原远程仓库迁移到新远程仓库,其实就是从原服务器拷贝裸库到新服务器
[root@ixxxxZ repositories]#ls
axxxxt.git       axxxxr.git            bxxxxo.git

// 先打包,传输快点, 也可以整个文件夹打包
[root@ixxxxZ repositories]#tar -zcf axxxxt.git.tar.gz axxxxt.git
// 上传到新服务器
[root@ixxxxZ repositories]#scp -r axxxxt.git.tar.gz 
 root@yyy.yyy.yyy.yyy:/home/git/repositories/

// 新服器解包,仓库 axxxxt 迁移完成,可以用了
[git@AY130321101831825608 repositories]$ tar -zxf axxxxt.git.tar.gz


// 从本地仓库上到远程仓库, 先从本地仓库导出为裸仓库
$ git clone --bare my_project my_project.git

// 上传裸仓库到远程服务器, 也可以先打包,然后再解包
$ scp -r my_project.git user@git.example.com:/srv/git

5.填坑 python-setuptools 安装失败,因为 CentOS 6.4 太旧,python-setuptools 包获取失败,自己手去下 python-setuptools 安装包,

https://files.pythonhosted.org/packages/a9/23/720c7558ba6ad3e0f5ad01e0d6ea2288b486da32f053c73e259f7c392042/setuptools-36.0.1.zipicon-default.png?t=LA92https://files.pythonhosted.org/packages/a9/23/720c7558ba6ad3e0f5ad01e0d6ea2288b486da32f053c73e259f7c392042/setuptools-36.0.1.zip

6. 填坑 管理员无法访问远程仓库,找到原来是 管理员的 id_rsa.pub 有多份在远程仓库,且gitosis-admin仓库下gitosis.conf 文中 [group gitosis-admin] members,中与id_rsa.pub文件名不匹配

[group gitosis-admin]
members =  pcadmin
writable = gitosis-admin

7. 使用 gitosis 原困,开发团队,多个仓库可以相互隔离,人员变动可以不用频繁登录服务器修改公钥

8.据说 gitosis 项目已经废弃,改用 gitolite

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值