Git预接收挂钩拒绝带有断开符号链接的推送



我正在为git远程编写一个预接收挂钩。如果推送中的任何已更改对象已断开(即悬挂)符号链接,则此预接收挂钩应拒绝推送。

也就是说,

#!/bin/bash
# hooks/pre-receive
while read old_sha1 new_sha1 name ; do
  files=$(git diff --name-only $old_sha1..$new_sha1)
  # If a file in $files is a symbolic link pointing at nothing, non-zero exit
done

我该怎么做?

您可以迭代文件并检查其中是否有损坏的符号链接。为此,您可以使用test -e来检查是否存在:

for f in $files; do if [ ! -e "$f" ]; then # Problem if you reach here ... exit 1 fi done

请注意,我上面的脚本对文件名中的空格并不健壮。使用CCD_ 3并在CCD_ 4上正确地划分结果将解决该问题。

最新更新