我正试图找到一种方法来阻止文件被提交到repo的根目录。无法直接通过分支政策找到解决方法。在/ *上设置所需的审阅者,例如将一个组添加到正在检入仓库的任何文件中。如果有人试图将文件仅签入回购的根目录( / ),是否可以将特定的组/个人添加为审阅者。
唯一的另一个选择似乎是添加一个运行自定义脚本的构建定义,以便在PR包含root的文件添加时使构建失败。是否有可能对此有帮助的vsts构建任务?
答案 0 :(得分:0)
您可以在PR验证构建定义中使用 PowerShell任务来检查repo根目录中是否有文件,脚本如下:
$files=$(git ls-files)
echo $files
echo $files.length
for ($i=0; $i -lt $files.Length; $i++)
{
$file = $files[$i]
if ($file -match "/")
{ echo "the file $file in subdir" }
else
{
echo "the file $file in root dir"
exit 1
}
}
此外,您可以在本地仓库中使用预提交挂钩,这样您就可以检测在提交和推送之前是否在根目录中提交了文件。该脚本可用于预提交挂钩,如下所示:
#!/bin/sh
for sfile in $(git diff --name-only --cached)
do
{
if [[ $sfile =~ "/" ]]; then
echo "the file $sfile in subdir"
else
echo "the file $sfile in root, stop to commit!"
exit 1
fi
}
done
for ufile in $(git diff --name-only)
do
{
if [[ $ufile =~ "/" ]]; then
echo "the file $ufile in subdir"
else
echo "the file $ufile in root, stop to commit!"
exit 1
fi
}
done