Git挂钩检查代码的存在

时间:2016-10-14 15:44:34

标签: git githooks

我对git的了解有限,无法理解git-hooks上的文档。我想知道是否有办法添加git-hook或其他一些构造,以便它可以检查其中一个文件中是否存在/注释掉了某些代码。我的工作流程是我有一个配置文件globalConfig.js,其中包含两组配置developmentproduction。当我开发时,我取消注释development配置并注释掉production配置,但是当我将任何代码提交到我的仓库时,我想确保production配置被取消注释并且development配置已被评论。

摘自globalConfig.js文件

开发

  // Production config - Always uncomment it before commiting
  // const firebaseConfig = {
  //   apiKey: "prod",
  //   authDomain: "prod",
  //   databaseURL: "prod",
  //   storageBucket: "prod",
  //   messagingSenderId: "prod"
  // };

  // Dev config - Always comment out before commiting
  const firebaseConfig = {
    apiKey: "dev",
    authDomain: "dev",
    databaseURL: "dev",
    storageBucket: "dev",
    messagingSenderId: "dev"
  };

生产

  // Production config - Always uncomment it before commiting
  const firebaseConfig = {
   apiKey: "prod",
   authDomain: "prod",
   databaseURL: "prod",
   storageBucket: "prod",
   messagingSenderId: "prod"
  };

  // Dev config - Always comment out before commiting
  // const firebaseConfig = {
  //  apiKey: "dev",
  //  authDomain: "dev",
  //  databaseURL: "dev",
  //  storageBucket: "dev",
  //  messagingSenderId: "dev"
  //};

是否可以通过git-hook或其他一些git构造实现它?

1 个答案:

答案 0 :(得分:1)

以下预提交挂钩应该可以帮助您入门。如果文件中包含单词development,那么它必须是注释,否则不允许提交。

步骤:

  1. 使用以下内容创建.git/hooks/pre-commit
  2. 
        git diff --cached --name-status | while read file; 
        do
                    if egrep "development" $file ; then
                        echo "ERROR: Disallowed development configuration in file: ${file}"
                        exit 1
                    fi
        done || exit $?
    

    请注意,egrep表达式是非常简单的atm,但你应该能够根据你的要求修改它(即globalConfig.js的确切内容)OR,你可以用{{1的片段来更新你的问题}):)

    1. 更改权限
    2. globalConfig.js

      1. 然后尝试提交无效的chmod 755 .git/hooks/pre-commit文件。这是我的测试显示的内容:
      2. globalConfig.js