實作git server/ gitweb / gitclient

我的狀況比較特殊
想要在同一台主機作git server與git client
然後使用gitweb方式呈現 


Git web實作:

  1. 安裝Apach
    sudo apt-get install apache2
  2. 安裝Gitweb
    sudo apt-get install gitweb
    gitweb.cgi 腳本安裝在/usr/lib/cgi-bin/ 中,該目錄為默認ubuntu 上apache2 的cgi-bin 目錄。所以,打開:
    http://127.0.0.1/cgi-bin/gitweb.cgi 即可顯示成功運行,只是我們還未將git項目加入其中。
  3. 修改配置文件:
    sudo vi /etc/gitweb.conf
    將其中的$projectroot 改為存放各個.git 的目錄
    我是沒有改啦! 用預設值/var/cache/git就好, 不要多增加麻煩

ps: 進階版
也可以小修改,讓網址簡化為 http://127.0.0.1/gitweb
由於按照上述作法上述,
有一次無法找到static/gitweb.csss等檔案,
所以用這方法解決
cd /var/www
ln -s /usr/share/gitweb/ gitweb

ps:位置資訊
/var/www <===為apach2的根目錄 /usr/share/gitweb/ <=== gitweb網頁前端資料 /usr/lib/cgi-bin/ <=== gitweb預設到這找cgi ref: http://blog.xuite.net/yctseng/notes/35220134-gitweb

http://blog.xuite.net/yctseng/notes/35220134-gitweb


Server端: 建立server端的repository目錄
通常Server端是 Git Repository的一個目錄 ex: project_name.git
而Client端是 .git的一個目錄 

  1. mkdir -p /var/cache/git/project_name.git
  2. cd /var/cache/git/project_name.git
  3. git –bare init

    //這時應該就可以在gitweb看到這個entry, 但還是空的!
    補充說明: –bare
    在不加–bare所init完的結果,會是在目前的working目錄下建立.git目錄,並把上述的git相關檔案放在.git目錄裡。
    加了–bare的話,則是不建.git目錄,而把裡面的檔案直接放在目前目錄下。
    適合在沒有修改檔案或開發的機器上,ex GIT server。
    好處是只要maintain git repository,project的資料只存在repository中,不需要再複製一份最新的版本出來,會省點空間。 

  4. git update-server-info

    因為web服務器一般不允許執行列出目錄中文件的操作, 所以git update-server-info命令把可用的打包文件(packfile)和引用(refs)列表更新到“objects/info/packs”,”info/ refs”這個兩個文件中

  5. adduser git
  6. chown git project_name.git/ -R
  7. chgrp git project_name.git/ -R
  8. 將檔案owner由root改另一個使用者git的用意是
    1: 方便samba開發時可以直接修改code, 因為我通常習慣samba用某個使用者(如git)登入而非root
    2: client端作git clone使用某個使用者(如git)

  9. 完成檢視 http://xx.xx.xx.xx/cgi-bin/gitweb.cgi

Client端: 由 Git Repository 取得資料 (Client)  

  1. git clone ssh://git@xx.xx.xx.x/var/cache/git/project_name.git
  2. 此指令會自動產生project_name的目錄, 且目錄裡面會有.git的子目錄

    如果server/cline在同一台,<協定+主機位置>可以填”file://”,以ssh連線就填”ssh://@”。
    是.git 的所在位置,這邊當然是”/git”

  3. 在此目錄加入檔案
  4. 初始的檔案資料

  5. git add .
  6. 將目錄底下所有檔案準備上傳

  7. git commit
  8. git push (第一次push請用: git push origin master)
  9. git push 上傳

    git push origin master: 將local修改提交到remote的master分支


參考:
http://shadowofisaac.blogspot.com/2011/05/git-server-ssh.html
http://tkg.im.ncue.edu.tw/?p=755

One thought on “實作git server/ gitweb / gitclient

  1. Pingback: 小筆記: SVN 轉 GIT | 易春木

發表迴響