2010-06-21 57 views
2

使用Perforce,我希望能夠拒絕包含帶有Windows行結尾的文件的提交(\ r \ n IIRC,可能只是\ r在任何地方,因爲我們只是想要文件與Unix行結尾)。使用Perforce觸發器拒絕Windows行結尾的文件

而不是dos2unix傳入文件或類似的,以幫助追蹤用戶試圖提交與Windows行結尾的文件的實例,我想添加一個觸發器拒絕文本提交,其中包含非Unix行結尾的文件。

有人可以演示觸發器本身如何寫入,也許用bash或python?

感謝

回答

4

這裏是最小的編輯,我可以爲在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 [email protected]=$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/[email protected]=12345 
    if $P4CMD print -q "[email protected]=$CHANGE" | fgrep "$TARGET" > /dev/null 
    then 
     echo "Submit fails: '$TARGET' not found in $FILE" 
     XIT=1 
    else 
     echo "" 

    fi 
done 
exit $XIT 

如果目標丟失原來的例子失敗,如果它是目前這一失敗 - 只需切換ifthenelse分支。您當然可以進一步編輯它(例如,如果您的grep支持它,例如給出grepfgrep-q標誌來抑制輸出,例如GNU's)。

相關問題