使用Perforce触发器拒绝具有Windows行结尾的文件

2024-05-29 02:06:56 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Perforce,我希望能够拒绝包含以Windows行结尾的文件的提交(\r\n IIRC,也许只是\r任何地方,因为我们只需要Unix行结尾的文件)。在

与dos2unix传入文件或类似文件不同,为了帮助跟踪用户试图提交具有Windows行结尾的文件的实例,我想添加一个触发器来拒绝包含非Unix行结尾文件的文本提交。在

有人能演示触发器本身是如何编写的吗?也许是用bash或python编写的?在

谢谢


Tags: 文件实例用户文本bashwindows地方结尾
1条回答
网友
1楼 · 发布于 2024-05-29 02:06:56

对于the p4 docs中的bash示例,以下是我可以进行的最小编辑:

#!/bin/sh
# Set target string, files to search, location of p4 executable...
TARGET='\r\n'
DEPOT_PATH="//depot/src/..."
CHANGE=$1
P4CMD="/usr/local/bin/p4 -p 1666 -c copychecker"
XIT=0
echo ""
# For each file, strip off #version and other non-filename info
# Use sed to swap spaces w/"%" to obtain single arguments for "for"
for FILE in `$P4CMD files $DEPOT_PATH@=$CHANGE | \
  sed -e 's/\(.*\)\#[0-9]* - .*$/\1/' -e 's/ /%/g'`
do
  # Undo the replacement to obtain filename...
  FILE="`echo $FILE | sed -e 's/%/ /g'`"
# ...and use @= specifier to access file contents:
  # p4 print -q //depot/src/file.c@=12345
  if $P4CMD print -q "$FILE@=$CHANGE" | fgrep "$TARGET" > /dev/null
  then 
      echo "Submit fails: '$TARGET' not found in $FILE"
      XIT=1
  else
      echo ""

  fi
done
exit $XIT

如果缺少目标,原始示例将失败;如果仅切换ifthenelse分支,则此示例将失败。当然,您可以进一步编辑它(例如,如果您的grep像GNU一样支持它,那么就给grep,或者fgrep标志来抑制输出)。在

相关问题 更多 >

    热门问题