配置文件管理方案

git hooks 使用

配置管理示意圖

image.png

git hooks 使用說(shuō)明

  • 客戶端 hooks

    1. pre-commit 鉤子在鍵入提交信息前運(yùn)行。
    2. prepare-commit-msg 鉤子在啟動(dòng)提交信息編輯器之前,默認(rèn)信息被創(chuàng)建之后運(yùn)行。
    3. post-commit 鉤子在整個(gè)提交過(guò)程完成后運(yùn)行。
    4. applypatch-msg 你可以用該腳本來(lái)確保提交信息符合格式,或直接用腳本修正格式錯(cuò)誤。
    5. pre-applypatch 在 git am 運(yùn)行期間被調(diào)用
    6. post-applypatch 運(yùn)行于提交產(chǎn)生之后,是在 git am 運(yùn)行期間最后被調(diào)用的鉤子。
    7. pre-rebase 鉤子運(yùn)行于變基之前,以非零值退出可以中止變基的過(guò)程。
    8. post-rewrite 鉤子被那些會(huì)替換提交記錄的命令調(diào)用。
    9. post-checkout 在 git checkout 成功運(yùn)行后調(diào)用。
    10. post-merge 在 git merge 成功運(yùn)行后調(diào)用。
    11. pre-push 在 git push 運(yùn)行期間, 更新了遠(yuǎn)程引用但尚未傳送對(duì)象時(shí)被調(diào)用。
    12. pre-auto-gc 會(huì)在垃圾回收開(kāi)始之前被調(diào)用,可以用它來(lái)提醒你現(xiàn)在要回收垃圾了,或者依情形判斷是否要中斷
  • 服務(wù)端 Hooks

    1. pre-receive 處理來(lái)自客戶端的推送操作時(shí)最先被調(diào)用。
    2. update 它會(huì)為每一個(gè)準(zhǔn)備更新的分支各運(yùn)行一次。
    3. post-receive 在整個(gè)過(guò)程完結(jié)以后運(yùn)行,可以用來(lái)更新其他系統(tǒng)服務(wù)或者通知用戶。
  • 測(cè)試驗(yàn)證

服務(wù)器 功能 目錄結(jié)構(gòu)
10.90.11.227 系統(tǒng)管理員本地倉(cāng)庫(kù) /software/process_config
172.31.4.123 中轉(zhuǎn)倉(cāng)庫(kù)/數(shù)據(jù)存放倉(cāng)庫(kù) 中轉(zhuǎn)倉(cāng)庫(kù): /software/workspace/project 數(shù)據(jù)存放倉(cāng)庫(kù): /software/workspace/project-local/project
  1. 初始化中轉(zhuǎn)倉(cāng)庫(kù)

    git init 和 git init --bare 的區(qū)別
    初始化出來(lái)的倉(cāng)庫(kù)是不一樣的,前者初始化的是一個(gè)普通的倉(cāng)庫(kù),其中 .git 文件夾是隱藏的,并且能看見(jiàn)該倉(cāng)庫(kù)下所有的源碼。而后者初始化出來(lái)的倉(cāng)庫(kù)中的文件,就是 .git 中的文件夾,但不能像前者那樣直接瀏覽或修改倉(cāng)庫(kù)中的代碼。

    $ mkdir /software/workspace/project
    $ cd /software/workspace/project
    $ git init --bare
    **結(jié)果:**
    -rw-r--r--  1 root root   23 Apr 25 06:10 HEAD
    drwxr-xr-x  2 root root    6 Apr 25 06:10 branches
    -rw-r--r--  1 root root   66 Apr 25 06:10 config
    -rw-r--r--  1 root root   73 Apr 25 06:10 description
    drwxr-xr-x  2 root root 4096 Apr 25 10:27 hooks
    drwxr-xr-x  2 root root   20 Apr 25 06:10 info
    drwxr-xr-x 41 root root 4096 Apr 25 10:26 objects
    drwxr-xr-x  4 root root   29 Apr 25 06:10 refs
    
  2. 初始化數(shù)據(jù)存儲(chǔ)倉(cāng)庫(kù)--其實(shí)就是做中轉(zhuǎn)倉(cāng)的檢出

    $ cd /software/workspace/project-local
    $ git clone /software/workspace/project
    drwxr-xr-x 6 root root 72 Apr 26 00:08 project
    
  3. 配置中轉(zhuǎn)倉(cāng)-- hooks

    $ cd /software/workspace/project/hooks
    $ cat post-receive # 系統(tǒng)管理員每次提交時(shí)指定 remote 倉(cāng)庫(kù) 后自動(dòng)觸發(fā) hooks 執(zhí)行以下代碼 必須有執(zhí)行權(quán)限
    #!/bin/sh
    cd /software/workspace/project-local/project  || exit
    echo ${GIT_DIR}
    unset GIT_DIR
    /usr/bin/git  pull
    echo "pull successful 172.31.4.123"
    
  4. 系統(tǒng)管理員本地倉(cāng)庫(kù)添加remote 源

    # 克隆版本庫(kù)的時(shí)候,所使用的遠(yuǎn)程主機(jī)自動(dòng)被Git命名為origin。如果想用其他的主機(jī)名,需要用git clone命令的-o選項(xiàng)指定。
    $ git clone -o source http://gitlab.product.co-mall:10080/liuyulong/process_configure.git
    $ git remote add deploy root@172.31.4.123:/software/workspace/project # root為系統(tǒng)賬戶
    $ git remote -v
    deploy  root@172.31.4.123:/software/workspace/project (fetch)
    deploy  root@172.31.4.123:/software/workspace/project (push)
    source  http://gitlab.product.co-mall:10080/liuyulong/process_configure.git (fetch)
    source  http://gitlab.product.co-mall:10080/liuyulong/process_configure.git (push)
    
  5. 系統(tǒng)管理員本地倉(cāng)庫(kù)提交測(cè)試

    $ vim nginx.conf
    $ git add .
    $ git commit -m "test hooks"
    [master 7b05314] test hooks
     1 file changed, 1 insertion(+)
    $ git push deploy # 此處如果想直接全部提交到遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行如下配置
    ########
     git remote set-url --add --push origin http://gitlab.product.co-mall:10080/liuyulong/process_configure.git
     git remote add both root@172.31.4.123:/software/workspace/project
      git remote set-url --add --push both http://gitlab.product.co-mall:10080/liuyulong/process_configure.git
     git remote set-url --add --push both root@172.31.4.123:/software/workspace/project
    git push both
    ########
    Counting objects: 4, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 457 bytes | 0 bytes/s, done.
    Total 4 (delta 1), reused 0 (delta 0)
    # 以下都是自定義 hooks 腳本返回的信息
    remote: .
    remote: 來(lái)自 /software/workspace/project
    remote:    7c07381..7b05314  master     -> origin/master
    remote: 更新 7c07381..7b05314
    remote: Fast-forward
    remote:  nginx/nginx.conf | 1 +
    remote:  1 file changed, 1 insertion(+)
    remote: pull successful 172.31.4.123
    To root@172.31.4.123:/software/workspace/project
       7c07381..7b05314  master -> master
    lonny@LonnyLiuMacPro ~/Documents/process_configure/nginx (git)-[master] %
    
  6. 配置文件管理完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GIT分布式版本控制系統(tǒng)最佳實(shí)踐 這篇文章來(lái)自于老男孩教育高級(jí)架構(gòu)師班12期的徐亮偉同學(xué)。 首先感謝老男孩架構(gòu)師班...
    meng_philip123閱讀 3,810評(píng)論 4 36
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • gitbook 簡(jiǎn)介 歡迎來(lái)使用Git, 它是一個(gè)快速的分布式版本控制系統(tǒng)。 以介紹Git如何存儲(chǔ)數(shù)據(jù)為始,了解它...
    君子Python閱讀 938評(píng)論 0 1
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,837評(píng)論 4 54
  • 寶悉地閱讀 172評(píng)論 0 0

友情鏈接更多精彩內(nèi)容