GIT 使用小结
接触的第一个版本控制软件是SVN,简单易学,容易上手。后来,Leader觉得Git更先进,就要求迁移到Git上来,俗话说,“不想学新技术的QA不是一个好RD“,虽然一百个不情愿,也只能硬着头皮学习,搞定。
这过程中,让我深刻感觉到版本控制重要性的是一件事,准备把SVN迁移到GIT的过程中,SVN Server被挪作他用,数据都丢失了,而”天阴偏逢屋漏雨“,在所有Automation Client上面的Test Sample都被Lab里面的AV产品删除了,哭笑不得。废话不多说了,进入正题。
第一部分: Git Server 配置
在可以使用apt-get 、yum的情况下安装配置Git ,GitWeb还是相对简单的,请参见,这里就不多说了。
因为测试环境都在Lab里面,不能够连接外网,这里讲的是从源码安装的过程:
OS选择的是RHEL5.1,直接从github中下载git源码,直接点击那个ZIP图标就能够下载下来一个Zip包:
编译并安装:
unzip git-git-v1.7.11.3-287-ge771946.zip
cd git-git-e771946
make prefix=/usr/local all
make prefix=/usr/local install
检查:
git --version
git version 1.7.9.5
说明安装成功!
创建一个名为'git'的用户,并为其创建一个.ssh目录用来存放SSH公钥:
adduser -m git su git cd ~ mkdir .ssh mkdir repos chown git:git repos
创建一个裸仓库:
cd repos
mkidr autokit.git
cd autokit.git
git --bare init
限制git用户的活动范围:
vim /etc/passwd
将
git:x:1000:1000::/home/git:/bin/sh
改为:
git:x:1000:1000::/home/git:/usr/bin/git-shell
现在git用户只能用SSH来推送或获取Git仓库,而不能直接使用主机shell。
搭建GitWeb,切换到git源码目录,生成定制的CGI脚本
cd git-git-e771946
make clean
make GITWEB_PROJECTROOT="/home/git/repos " \
bindir=/usr/local/bin gitweb
GITWEB_PROJECTROOT为要查看的git仓库目录,bindir为git目录
将生成的gitweb目录copy到/var/www目录下
cp -Rf gitweb /var/www
RHEL中apache是默认安装的饿,设置apache以CGI方式运行该脚本,在/etc/httpd/conf/httpd.conf中添加一个VirtualHost配置:
<VirtualHost *:80> ServerName gitserver DocumentRoot /var/www/gitweb <Directory /var/www/gitweb> Options ExecCGI FollowSymLinks SymLinksIfOwnerMatch AllowOverride All order allow,deny Allow from all AddHandler cgi-script cgi DirectoryIndex gitweb.cgi </Directory> </VirtualHost>
启动apache:
/etc/init.d/httpd start
因为我们已经在repos中创建一个仓库,如果出现如下截图:
尝试下,设置下仓库目录权限:
chmod 775 git cd repos chmod 775 repos
或则,查看下RELinux有没有关闭,关闭RELinux服务,就是这个鬼东西,纠结了我一个下午,最后还是Stack overflow中找到的答案。
setenforce 0
GitWeb也搞定了,直接在浏览器里输入:gitserver.com,或则http://ip地址就会出现git仓库目录的web界面
第二部分:Windwos 客户端设置
下载msysGit,默认安装就可以。就如SVN的小乌龟一样,Git也提供了一个GUI界面 - TortoiseGit。 安装TortoiseGit之前需要需要先安装msysGit。
第一个要配置的是用户名和电子邮件地址,提交时会引用这两条信息来说明是谁做了什么操作,这个可以通过Git bash配置
git config --global user.name "matt chen" git config --global user.email studentctz@hotmail.com
也可以通过TortoiseGit 的setting来配置:
第二件事情,生成SSH公钥:
将生成的公钥,以邮件的形式发送给Git Server管理员,由管理员将public key添加到git用户的authorized_keys文件中:
cat /tmp/id_rsa.matt.pub >> ~/.ssh/authorized_keys
现在使用putty中工具PuttyGen,Load刚生成的id_rsa私钥文件,然后选择save private key,将OpenSSH格式的私钥保存为putty所认识的私钥格式ppk.
运行PAGENT,选择Add keyw,指定刚刚转换格式的私钥,如果不转换格式,就会报如下错误,
现在就可以通过SSH方式来克隆Git Server中的仓库了
讲一下,我遇到一个困惑许久的问题,在自己搭建Git Server之前,一直使用GitHub,只要使用puttygen生成公钥和私钥,讲公钥传到github中,通过私钥就能add ,commit文件。当自己搭建Git Server的时候,也一直以为也该这样。但结果是一直不行,都不能建立连接。后来终于明白了,git server端使用的是OpenSSH,和putty是不同的SSH协议,就像刚才做的那样需要转换。如果细心点,安装TortoiseGit的过程中就应该注意到这个区别。
第三部分:与eclipse集成 - Egit插件
安装Egit,eclipse –> Help –>Eclipse MarketPlace 在find中输入egit,点击install就可以,这个过程比较慢,你也可以直接到Egit官网下载,手动安装。
Git with Eclipse (EGit) - Tutorial有详细讲解怎么用,在结合这篇 使用github管理Eclipse分布式项目开发,应该够了。
第四部分:从SVN迁移到Git
请参看:
Importing from Subversion
最后两部分没写什么,因为太困了。要睡觉了!
本文参考了如下文章:
pro git : https://github.com/progit/progit/tree/master/zh
搭建gitweb: http://www.tech126.com/%E6%90%AD%E5%BB%BAgitweb%E7%8E%AF%E5%A2%83/
stack overflow: http://stackoverflow.com/questions/10275536/configuring-gitweb-404-no-projects-found
安装git server :http://loading.1976.blog.163.com/blog/static/1278037142011818112249642/
posted on 2012-07-24 01:16 matt_chen 阅读(3294) 评论(2) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?