zoukankan      html  css  js  c++  java
  • 配置文件管理

    配置管理示意图

    配置文件管理示意图

    git hooks 使用说明

    • 客户端 hooks

      1. pre-commit 钩子在键入提交信息前运行。
      2. prepare-commit-msg 钩子在启动提交信息编辑器之前,默认信息被创建之后运行。
      3. post-commit 钩子在整个提交过程完成后运行。
      4. applypatch-msg 你可以用该脚本来确保提交信息符合格式,或直接用脚本修正格式错误。
      5. pre-applypatch 在 git am 运行期间被调用
      6. post-applypatch 运行于提交产生之后,是在 git am 运行期间最后被调用的钩子。
      7. pre-rebase 钩子运行于变基之前,以非零值退出可以中止变基的过程。
      8. post-rewrite 钩子被那些会替换提交记录的命令调用。
      9. post-checkout 在 git checkout 成功运行后调用。
      10. post-merge 在 git merge 成功运行后调用。
      11. pre-push 在 git push 运行期间, 更新了远程引用但尚未传送对象时被调用。
      12. pre-auto-gc 会在垃圾回收开始之前被调用,可以用它来提醒你现在要回收垃圾了,或者依情形判断是否要中断
    • 服务端 Hooks

      1. pre-receive 处理来自客户端的推送操作时最先被调用。
      2. update 它会为每一个准备更新的分支各运行一次。
      3. post-receive 在整个过程完结以后运行,可以用来更新其他系统服务或者通知用户。
    • 测试验证

    服务器 功能 目录结构
    10.90.11.227 系统管理员本地仓库 /software/process_config
    172.31.4.123 中转仓库/数据存放仓库 中转仓库: /software/workspace/project 数据存放仓库: /software/workspace/project-local/project
    1. 初始化中转仓库

      git init 和 git init --bare 的区别
      初始化出来的仓库是不一样的,前者初始化的是一个普通的仓库,其中 .git 文件夹是隐藏的,并且能看见该仓库下所有的源码。而后者初始化出来的仓库中的文件,就是 .git 中的文件夹,但不能像前者那样直接浏览或修改仓库中的代码。

      $ mkdir /software/workspace/project
      $ cd /software/workspace/project
      $ git init --bare
      **结果:**
      -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. 初始化数据存储仓库--其实就是做中转仓的检出

      $ cd /software/workspace/project-local
      $ git clone /software/workspace/project
      drwxr-xr-x 6 root root 72 Apr 26 00:08 project
      
    3. 配置中转仓-- hooks

      $ cd /software/workspace/project/hooks
      $ cat post-receive # 系统管理员每次提交时指定 remote 仓库 后自动触发 hooks 执行以下代码 必须有执行权限
      #!/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. 系统管理员本地仓库添加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为系统账户
      $ 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. 系统管理员本地仓库提交测试

      $ 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. 配置文件管理完毕

  • 相关阅读:
    async await promise 执行时序
    理解prototype
    X-Requested-With
    event事件传播规则
    【小文】Flask web Hello程序!
    【小文】php-gtk: Hello!
    【小文】HTTP 状态码
    【小文】Python环境安装配置
    C语言:趣味小问题 鸡兔同笼
    C语言:趣味小问题 百钱买百鸡
  • 原文地址:https://www.cnblogs.com/edwardlogs/p/pei-zhi-guan-li-shi-yi-tu.html
Copyright © 2011-2022 走看看