3

Collabnet SVNのプリコミットスクリプトで次のコードを使用して、特定のファイル拡張子がコミットされるように制限しますが、すべてのファイルをコミットしています。どこが悪いのか教えてください。

#!/bin/sh

REPOS="$1"
TXN="$2"

SVNLOOK=/home/csvn/csvn/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`

if [ "$LOGMSG" -lt 10 ];
then
  echo -e "\n===========================================================" 1>&2
  echo -e "|| COMMENTS ARE MADE MANDATORY.PLEASE ENTER RELEVANT COMMENT & COMMIT AGAIN Sanjeev sas||" 1>&2
  echo -e "===========================================================" 1>&2
  exit 1
fi

$SVNLOOK changed -t $TXN $REPOS | awk '
BEGIN {
FILTER=".(sh|xls|xlsx|pdf|jpg|JPG|gif|GIF|png|PNG|doc|DOC|docx|DOCX|mpg|swf|avi|mp3|mp4|zip|rar|gz|csv|o|obj|tar|gz|JPEG|jpeg|WMV|wmv|DAT|dat|3GP|3gp|MPEG|mpeg|VOD|vod|ear|jar|war|exe|ppt|PPT|PPTX|pptx|7z|iso|ISO|EAR|WAR|JAR|msg|MSG|rtf|RTF|xlsm|XLSM|vsd|VSD|dot|DOT|camrec|ECF|ecf|mff|MFF|class|CLASS)$"
}
{
 for (i = 1; i < 2; i++) $i = ""; sub(/^ */, "");
 if(match(tolower($1),FILTER))
 { 
     print "File" $1 "is not allowed file type to commit" 
     exit 1
 }
}'    

exit 0
4

3 に答える 3

3

以下のスクリプトは私のために働きます!! あなたの考えを教えてください

#!/bin/bash

REPOS=$1
TXN=$2
AWK=/bin/awk
SVNLOOK="/usr/bin/svnlook";

#Put all the restricted formats in variable FILTER
FILTER=".(sh|xls|xlsx|exe|xlsm|XLSM|vsd|VSD|bak|BAK|class|CLASS)$"

# Figure out what directories have changed using svnlook.
FILES=`${SVNLOOK} changed ${REPOS} -t ${TXN} | ${AWK} '{ print $2 }'` > /dev/null

for FILE in $FILES; do

#Get the base Filename to extract its extension
NAME=`basename "$FILE"`

#Get the extension of the current file
EXTENSION=`echo "$NAME" | cut -d'.' -f2-`

#Checks if it contains the restricted format
if [[ "$FILTER" == *"$EXTENSION"* ]]; then
    echo "Your commit has been blocked because you are trying to commit a restricted file." 1>&2
    echo "Please contact SVN Admin. -- Thank you" 1>&2
    exit 1

fi

done
exit 0
于 2013-02-18T08:59:05.920 に答える
0

私は@Sanと同じ問題を抱えていますが、@Jijoからの回答は、SVNサーバーを実行しているためスクリプトが機能しないため、私のケースでは直接役に立ちませんAIX。以下に示すようにスクリプトを強化しました私の場合に合うかもしれません。とにかく、スクリプトを共有してくれた @Jijo に感謝します。

#Put all the restricted formats in variable FILTER
FILTER=".(xls|xlsx|exe|pptx|PPTX|vsd|VSD|bak|BAK|class|CLASS|zip|ZIP|doc|DOC|docx|DOCX)$"

# Figure out what directories have changed using svnlook.
FILES=$(${SVNLOOK} changed -t ${TXN} ${REPOS} | ${AWK} '{ print $NF }') > /dev/null

for FILE in $FILES 
do
  EXTENSION=`echo "$FILE" | cut -d'.' -f2-`

  if [[ "$FILTER" == *"$EXTENSION"* ]]; then
    echo "Your commit has been blocked because you are trying to commit a restricted file." 1>&2
    echo "Please contact SVN Admin. -- Thank you" 1>&2
    exit 1
  fi
done
于 2014-03-13T06:54:04.527 に答える