配置文件管理方案

git hooks 使用

配置管理示意圖

image.png

git hooks 使用說明

  • 客戶端 hooks

    1. pre-commit 鉤子在鍵入提交信息前運行司草。
    2. prepare-commit-msg 鉤子在啟動提交信息編輯器之前净薛,默認信息被創(chuàng)建之后運行。
    3. post-commit 鉤子在整個提交過程完成后運行杖玲。
    4. applypatch-msg 你可以用該腳本來確保提交信息符合格式胧华,或直接用腳本修正格式錯誤温数。
    5. pre-applypatch 在 git am 運行期間被調(diào)用
    6. post-applypatch 運行于提交產(chǎn)生之后撞牢,是在 git am 運行期間最后被調(diào)用的鉤子率碾。
    7. pre-rebase 鉤子運行于變基之前,以非零值退出可以中止變基的過程屋彪。
    8. post-rewrite 鉤子被那些會替換提交記錄的命令調(diào)用所宰。
    9. post-checkout 在 git checkout 成功運行后調(diào)用。
    10. post-merge 在 git merge 成功運行后調(diào)用畜挥。
    11. pre-push 在 git push 運行期間仔粥, 更新了遠程引用但尚未傳送對象時被調(diào)用。
    12. pre-auto-gc 會在垃圾回收開始之前被調(diào)用蟹但,可以用它來提醒你現(xiàn)在要回收垃圾了件炉,或者依情形判斷是否要中斷
  • 服務端 Hooks

    1. pre-receive 處理來自客戶端的推送操作時最先被調(diào)用。
    2. update 它會為每一個準備更新的分支各運行一次矮湘。
    3. post-receive 在整個過程完結(jié)以后運行,可以用來更新其他系統(tǒng)服務或者通知用戶口糕。
  • 測試驗證

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

    git init 和 git init --bare 的區(qū)別
    初始化出來的倉庫是不一樣的缅阳,前者初始化的是一個普通的倉庫,其中 .git 文件夾是隱藏的景描,并且能看見該倉庫下所有的源碼十办。而后者初始化出來的倉庫中的文件,就是 .git 中的文件夾超棺,但不能像前者那樣直接瀏覽或修改倉庫中的代碼向族。

    $ 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ù)存儲倉庫--其實就是做中轉(zhuǎn)倉的檢出

    $ 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)倉-- hooks

    $ cd /software/workspace/project/hooks
    $ cat post-receive # 系統(tǒng)管理員每次提交時指定 remote 倉庫 后自動觸發(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)管理員本地倉庫添加remote 源

    # 克隆版本庫的時候,所使用的遠程主機自動被Git命名為origin棠绘。如果想用其他的主機名件相,需要用git clone命令的-o選項指定再扭。
    $ 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)管理員本地倉庫提交測試

    $ vim nginx.conf
    $ git add .
    $ git commit -m "test hooks"
    [master 7b05314] test hooks
     1 file changed, 1 insertion(+)
    $ git push deploy # 此處如果想直接全部提交到遠程倉庫進行如下配置
    ########
     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: 來自 /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)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夜矗,隨后出現(xiàn)的幾起案子泛范,更是在濱河造成了極大的恐慌,老刑警劉巖紊撕,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罢荡,死亡現(xiàn)場離奇詭異,居然都是意外死亡对扶,警方通過查閱死者的電腦和手機区赵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浪南,“玉大人笼才,你說我怎么就攤上這事〕研梗” “怎么了患整?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喷众。 經(jīng)常有香客問我各谚,道長,這世上最難降的妖魔是什么到千? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任昌渤,我火速辦了婚禮,結(jié)果婚禮上憔四,老公的妹妹穿的比我還像新娘膀息。我一直安慰自己,他們只是感情好了赵,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布潜支。 她就那樣靜靜地躺著,像睡著了一般柿汛。 火紅的嫁衣襯著肌膚如雪冗酿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天络断,我揣著相機與錄音裁替,去河邊找鬼。 笑死貌笨,一個胖子當著我的面吹牛弱判,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锥惋,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昌腰,長吁一口氣:“原來是場噩夢啊……” “哼开伏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剥哑,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤硅则,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后株婴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怎虫,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年困介,在試婚紗的時候發(fā)現(xiàn)自己被綠了大审。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡座哩,死狀恐怖徒扶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情根穷,我是刑警寧澤姜骡,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站屿良,受9級特大地震影響圈澈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尘惧,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一康栈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喷橙,春花似錦啥么、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疙剑,卻和暖如春隅熙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背核芽。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酵熙,地道東北人轧简。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像匾二,于是被迫代替她去往敵國和親哮独。 傳聞我的和親對象是個殘疾皇子拳芙,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

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