标签: pre-commit-hook

无法从svn预提交挂钩生成输出

我有一个centos6 linux服务器托管svn(版本1.6.11(r934486))repo,可通过Apache通过DAV访问.我使用windows tortoise-svn客户端1.7.12来访问repo.

我有一个非常简单的测试预提交钩子,总是会失败.

echo "this is a test"
exit 1
Run Code Online (Sandbox Code Playgroud)

尝试失败的尝试

Sending content: D:\code\foo\test.c  
Error: Commit failed (details follow):  
Error: Commit blocked by pre-commit hook (exit code 1) with no output.  
Completed!:   
Run Code Online (Sandbox Code Playgroud)

我期待在我的客户端上看到"这是一个测试",但是我得到了预先提交钩子而没有输出.hooks/pre-commit是可执行的,并且当在linux服务器上手动运行时回显预期的输出.

关于我缺少什么的任何指示?

svn pre-commit-hook

4
推荐指数
1
解决办法
3573
查看次数

GIT 预提交挂钩,在修改/添加的文件中搜索非 UTF-8 编码(如果找到任何文件,则拒绝提交)

我正在使用 Windows 版 Git(和 TortoiseGit)。

我的目标是防止提交修改/添加至少一个非 UTF-8 文件。

  • 枚举修改/添加的文件:我找到了以下代码

    { git diff --name-only ; git diff --name-only --staged ; }
    
    Run Code Online (Sandbox Code Playgroud)

    这是最好的(正确且最简洁的)方法吗?

  • 搜索非 UTF-8 文件:我找到了以下代码

    { git diff --name-only ; git diff --name-only --staged ; } | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {} - is non-UTF8!"
    
    Run Code Online (Sandbox Code Playgroud)

    如果我在存储库根文件夹中启动 Git Bash - 它会起作用(显示每个非 UTF-8 文件)。所以我将上面的代码重命名.git/hooks/pre-commit.sample为并复制粘贴。.git/hooks/pre-commit提交更改后,TortoiseGit 提交 gui 窗口中不会显示任何特殊内容。所以看起来预提交挂钩无法正常工作。

  • 如果存在任何非 UTF-8 文件,则拒绝提交:显示所有非 UTP-8 文件后,应拒绝提交。但我不知道如何做到这一点(显示一些退出代码 - 但如何?)。

因此,我们将不胜感激任何帮助。

windows git bash pre-commit-hook git-bash

4
推荐指数
1
解决办法
2029
查看次数

gitlab CI 管道检查代码格式

我希望google-java-formatter在我的几个项目中进行安装。

但是,在提交代码时,我希望CI管道首先检查格式是否已完成。

我知道我可以使用.gitlab-ci.yml根目录中的文件来完成此操作,但是我非常不确定如何实现检查所有文件格式是否正确的目标,任何人都可以帮助我解决如何执行此操作的google-java-formatter问题gitlab

pipeline pre-commit-hook githooks gitlab-ci linter

4
推荐指数
1
解决办法
2万
查看次数

预提交挂钩不会在终端上回显

我正在尝试使用预提交挂钩运行脚本。这是我的脚本:

构建脚本.sh

 #! /bin/bash
 echo "Stage 1: Preparing CMake configuration"
Run Code Online (Sandbox Code Playgroud)

.pre-commit-config.yaml

fail_fast: false
  - repo: local
    hooks:
    -   id: Generate build 
        name: Generate build 
        entry: sh build_script.sh
        language: system
        always_run: true
        pass_filenames: false
Run Code Online (Sandbox Code Playgroud)

我可以看到,当我运行 command 时git commit -m "message",挂钩调用脚本Generate build并将通过。但是,我在终端上看不到回声。我想看看这条消息,"Stage 1: Preparing CMake configuration"。这个设置有什么问题吗?

bash echo pre-commit-hook pre-commit.com

4
推荐指数
1
解决办法
2776
查看次数

在预提交挂钩参数中使用环境变量

我正在努力将环境变量使用到预提交挂钩配置的参数部分

以下是一个示例 spinet 来展示我正在尝试做的事情

 - repo: https://github.com/returntocorp/semgrep
   rev: "v0.1.2"
   hooks:
     - id: semgrep
       name: semgrep my_custom_rule
       args:
         [
           "--config",
           "https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml",
           "--error",
         ]
Run Code Online (Sandbox Code Playgroud)

我已经将 TOKEN 的值设置到环境变量中。但仍在处理中,URL 被视为 https://PRIVATE-TOKEN:{$TOKEN}@gitlab.com/api/proj/packages/test-rule.yml 而不是实际的令牌值。出于安全原因,我想避免将实际令牌放入配置中。

pre-commit pre-commit-hook pre-commit.com semgrep

4
推荐指数
1
解决办法
2629
查看次数

是否可以将预提交配置文件添加到非根文件夹?

我为我的一个项目设置了一个预提交插件。

目前,.pre-commit-config.yaml配置文件位于项目的根目录下(如官方文档https://pre-commit.com/#usage所示)。

是否可以将其移至单独的文件夹并以某种方式调整以从那里读取?

当前状态(命令输出dir):

.pre-commit-config.yaml                                                                                                                                                                                                                                                                                                                      
.pylintrc                                                                                                                                                                      
ci                                                                                                                                                                             
commons                                                                                                                                                                        
doc
...         
Run Code Online (Sandbox Code Playgroud)

我想要什么(或类似的):

.pylintrc                                                                                                                                                                      
ci                                                                                                                                                                             
commons                                                                                                                                                                        
doc
precommit\.pre-commit-config.yaml
...         
Run Code Online (Sandbox Code Playgroud)

git pre-commit pre-commit-hook pre-commit.com

4
推荐指数
1
解决办法
1318
查看次数

Subversion标记和安全性

我已经从头开始设置了一个SVN存储库,并且我已经使用SVN复制命令成功标记了我的一些版本.

我使用了SSPI auth插件来实现apache,因此我们的开发人员只需使用他们的网络凭据来访问服务器,一切都运行良好.

我创建了一个AuthZ授权文件,将我们的开发人员添加到文件中的组,并授予他们对root的写入权限.我还授予匿名用户对root的只读访问权限.

然后我用以下命令锁定/ svn /目录:Require-group"CORP\CKAN0BlahBlah"

这有效地将安全组中的新开发人员限制为只读访问,直到他们通过aAuthZ配置文件被授予访问权限.

现在,我有几个问题:

  1. 什么是阻止用户将更改提交到任何"标签"目录的正确方法(荣誉系统除外)?

  2. 是否可以使用SSPI将组成员传递给AuthZ,而不是在配置文件中单独列出成员?

svn version-control pre-commit-hook batch-processing

3
推荐指数
1
解决办法
1536
查看次数

预提交钩子获取部分提交文件列表

我知道运行git-diff和其他工具可以识别存储库中的更改,但是当我进行部分提交时,我只需要将提交的文件(而不是触及的整个文件集)传递给预提交钩.

例如,我修改了三个文件并只提交了两个,我希望预提交钩子知道这两个文件的名称.

git status --porcelain

M A.c 
M B.c
M C.h
Run Code Online (Sandbox Code Playgroud)

然后我执行:

git commit -m "two files only" A.c B.c
Run Code Online (Sandbox Code Playgroud)

预提交挂钩如何才能获取两个文件的列表?

git pre-commit-hook

3
推荐指数
1
解决办法
1468
查看次数

在预提交挂钩期间再次暂存文件?

mvn java-formatter:format在预提交挂钩中安装了任务.此任务将格式化java源代码.

pushd src/ > /dev/null

mvn java-formatter:format
RETVAL=$?
if (($RETVAL == 1)); then
        exit 1
fi

popd > /dev/null
Run Code Online (Sandbox Code Playgroud)

我需要附加新格式化的源文件来提交.我怎样才能做到这一点?

git pre-commit pre-commit-hook githooks

3
推荐指数
1
解决办法
434
查看次数

是否可以使用--no-verify标志提交TortoiseGit?

我安装了一个git precommit钩子,有时我想用--no-verifyflag 提交。我知道如何在命令行中执行此操作,但我想在TortoiseGit中执行此操作(因为Windows中的命令行非常差)。我怎样才能做到这一点?我通读了https://tortoisegit.org/docs/tortoisegit/tgit-dug-commit.html,但找不到任何有用的信息。

windows git commit pre-commit-hook tortoisegit

3
推荐指数
1
解决办法
913
查看次数