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中創建一個倉庫,如果出現如下截圖:

1

嘗試下,設置下倉庫目錄權限:

chmod 775 git
cd repos
chmod 775 repos

或則,查看下RELinux有沒有關閉,關閉RELinux服務,就是這個鬼東西,糾結了我一個下午,最后還是Stack overflow中找到的答案。

setenforce 0

GitWeb也搞定了,直接在瀏覽器里輸入:gitserver.com,或則http://ip地址就會出現git倉庫目錄的web界面

Capture

 

 

第二部分: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來配置:

5

第二件事情,生成SSH公鑰:

6

將生成的公鑰,以郵件的形式發送給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.

4

運行PAGENT,選擇Add keyw,指定剛剛轉換格式的私鑰,如果不轉換格式,就會報如下錯誤,

3

現在就可以通過SSH方式來克隆Git Server中的倉庫了

1

講一下,我遇到一個困惑許久的問題,在自己搭建Git Server之前,一直使用GitHub,只要使用puttygen生成公鑰和私鑰,講公鑰傳到github中,通過私鑰就能add ,commit文件。當自己搭建Git Server的時候,也一直以為也該這樣。但結果是一直不行,都不能建立連接。后來終於明白了,git server端使用的是OpenSSH,和putty是不同的SSH協議,就像剛才做的那樣需要轉換。如果細心點,安裝TortoiseGit的過程中就應該注意到這個區別。

2

 

第三部分:與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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM