zoukankan      html  css  js  c++  java
  • 【xinsir】githook之precommit分享

    个人博客:https://theeye.tech

    博客小程序:

    钩子类型

     使用node编写githook,以pre-commit为例:

    1.在项目下配置自动生成pre-commit文件,一般可以在启动项目的脚本下添加:

    modifyPreCommit: function () {
        if (!fse.existsSync('.git')) {
          console.log('该项目下没有git配置');
          return;
        }
        if (!fse.existsSync('.git/hooks')) { // 没有hooks文件,sourceTree拉下来的代码会出现这种情况
          fs.mkdirSync(`.git/hooks`);
        }
        if (!fse.existsSync('.git/hooks/pre-commit')) { // 没有pre-commit,创建该文件并且添加checkVer,如果有该文件不进行操作,以免覆盖原有的设置
          fse.ensureFileSync('.git/hooks/pre-commit');
          fs.readFile(path.resolve(__dirname, './addPreCommit'), function (err, data) {
            if (err) {
              console.log(err);
              return;
            }
            const str = data.toString();
            fs.writeFile('.git/hooks/pre-commit', str, function (err) {
              if (err) {
                console.log(err);
                return;
              }
              console.log('git pre-commit配置成功!');
              cp.exec('chmod 777 .git/hooks/pre-commit');
            });
          });
        }
      }

    2.添加被拷贝的addPreCommit(此步骤可以兼容sourceTree的使用):

    #!/usr/bin/env bash 
    # 支持 sourcetree
    export PATH=/usr/local/bin:$PATH
    node "./config/githook/pre-commit.js"

    3.添加校验pre-commit.js(以校验冲突为例):

    const execSync = require('child_process').execSync;
    const isConflictRegular = '<<<<<<< HEAD';
    let results;
    
    try {
      // git grep 命令会执行 perl 的正则匹配所有满足冲突条件的文件
      results = execSync(`git grep -n "${isConflictRegular}"`, { encoding: 'utf-8' });
      results = results.trim();
    } catch (e) {
      results = '';
    }
    if(results!== '') {
       console.log('提交的文件中有冲突:');
       console.log(results);
       process.exit(1);
    } else {
       process.exit(0);
    }

    ps:这样的提示比较苍白,可以引用colors更直观~

     
  • 相关阅读:
    【自动化测试】rf+selenium中解决for计数嵌套循环问题
    【自动化测试】RF链接数据库12c遇到的问题总结
    【自动化测试】关于如何管理规范整个团队的想法(1)
    python爬虫--基本流程
    python爬虫--理论
    [工具箱]一键优化Windows
    [工具箱]禁用Windows系统更新做了哪些操作?
    有人说要节能,有人说要耗能
    让攻击挖矿耗能的攻击者闭嘴的方法是?
    POC挖矿没有前途
  • 原文地址:https://www.cnblogs.com/xinsir/p/12012764.html
Copyright © 2011-2022 走看看