Git 挂钩拒绝文件名超过指定限制的提交
Git hook to reject commits where filename is longer than specified limit
我想创建一个客户端预提交 git 挂钩,如果添加到提交的任何文件的文件名超过指定限制(比如 256 ).
这里是一个起点:
#!/bin/sh
# .git/hooks/pre-commit
# Checks that the file about to be committed
# doesn't have a name longer than 256 characters
if test $(git diff --cached --diff-filter=A --name-only | xargs -0 basename | tr -d '\n' | wc -c) -gt 256
then
echo "The staged file name is longer than 256 characters"
exit 1
fi
exit 0
这是命令的细分:
git diff --cached --diff-filter=A --name-only
获取暂存文件的路径
xargs -0 basename
对于每个路径,提取文件名
tr -d '\n'
删除换行符
wc -c
Returns文件名的字符数
如果您只有一个暂存文件,则此示例有效。您必须通过 运行 对所有分阶段路径进行相同的循环检查来进一步开发它。
我想创建一个客户端预提交 git 挂钩,如果添加到提交的任何文件的文件名超过指定限制(比如 256 ).
这里是一个起点:
#!/bin/sh
# .git/hooks/pre-commit
# Checks that the file about to be committed
# doesn't have a name longer than 256 characters
if test $(git diff --cached --diff-filter=A --name-only | xargs -0 basename | tr -d '\n' | wc -c) -gt 256
then
echo "The staged file name is longer than 256 characters"
exit 1
fi
exit 0
这是命令的细分:
git diff --cached --diff-filter=A --name-only
获取暂存文件的路径xargs -0 basename
对于每个路径,提取文件名tr -d '\n'
删除换行符wc -c
Returns文件名的字符数
如果您只有一个暂存文件,则此示例有效。您必须通过 运行 对所有分阶段路径进行相同的循环检查来进一步开发它。