Linux構建Git程式碼倉庫與自動部署

超全棧發表於2018-06-08

git

Git是用於Linux核心開發的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它採用了分散式版本庫的作法,不需要伺服器端軟體,就可以運作版本控制,使得原始碼的釋出和交流極其方便。Git的速度很快,這對於諸如Linux核心這樣的大專案來說自然很重要。git最為出色的是它的合併追蹤(merge tracing)能力。

維基上關於git的解釋,連結:https://zh.wikipedia.org/wiki/Git

構建Git倉庫的方式即可以在本地直接生成,也可以自己搭建一個Git伺服器,本文介紹在Linux伺服器上如何構建一個Git程式碼倉庫。Let's Start!

Git server

  1. 建立一個git使用者(專門的git使用者用於git連線,限制只能處理程式碼等操作)
    $ adduser git
複製程式碼
  1. opt目錄下建立一個資料夾code
    $ mkdir /opt/code
複製程式碼
  1. 進入資料夾後建立一個git空倉
    $ cd code
    $ git init --bare test.git
複製程式碼
  1. 檢視git倉庫目錄結構
    $ cd test.git
複製程式碼

目錄

  • HEAD:指示目前被檢出的分支
  • config:包含專案特有的配置選項
  • description:僅供 GitWeb 程式使用
  • hooks:包含客戶端或服務端的鉤子指令碼(hook scripts)
  • info:包含一個全域性性排除(global exclude)檔案,用以放置那些不希望被記錄在 .gitignore 檔案中的忽略模式(ignored patterns)
  • objects:儲存所有資料內容
  • refs:儲存指向資料(分支)的提交物件的指標

自動部署函式

進入hooks中建立一個函式(當接收傳送時自動呼叫的鉤子),實現當程式碼更新時服務端執行程式碼同步更新(此步驟僅作自動化部署方案參考,實際執行環境應根據需求後使用)。

    $ cd hooks
    $ vim post-receive
複製程式碼

內容為重寫指定工作區檔案,程式碼如下

#!/bin/bash
git --work-tree=/www/wwwroot/test checkout -f
複製程式碼

實際情況應將‘/www/wwwroot/test’替換為目標專案位置,此目錄git使用者需有許可權

chown -R git:root /www/wwwroot/test
複製程式碼

最後給post-receive檔案執行許可權

chmod +x post-receive
複製程式碼

具體鉤子建立與否需根據專案具體實現做不同的調整,某些大廠的程式碼管理是用專門的伺服器進行管理,在網頁控制分支合併釋出,一鍵部署等,抽象出版本管理這層,以便程式碼的釋出,不知道大家都是怎麼實現版本迭代,分支管理的呢?(如果還是手動搬運程式碼就可以試著實現自己的自動化部署啦~)

Git client

  1. 將儲存庫(將IP替換為倉庫ip地址)克隆到新目錄(可用git BASH客戶端使用),也可直接在伺服器上使用,輸入git clone /opt/code/test.git
    $ git clone git@IP:/opt/code/test.git
複製程式碼
  1. 進入新建立的目錄中,接著建立測試檔案,程式碼如下
    $ cd test
    $ touch index.html
複製程式碼
  1. 上傳到倉庫中,程式碼如下
    $ git add .
    $ git commit -m 'create index.html'
    $ git push
複製程式碼
  1. 進入之前指定的工作區資料夾檢視程式碼是否提交成功,或通過重複步驟一克隆一份新程式碼,若測試檔案存在則成功。

如發生錯誤,有的可能是因為使用者許可權的原因,通過chmod命令配置許可權給git使用者即可

後記

現如今程式碼管理已發展了諸多工具(如svn,cvs),程式碼託管平臺(如Github,Gitlab)可供選擇,要說的話,程式碼如同貨物,適合的版本管理如同高度自動化的船舶,僅需少數船員,即可駕駛著輪船穩健駛向新航線,提高效率,迎接新世紀。

\(•ㅂ•)/♥ 共勉~

相關文章