On Aug 31, 2010, at 12:59, Tech Geek wrote: > Let's say if somehow we do manage to implement this hook before the > development/project begins then after the first revision/commit the > project.xml file will also be committed (because we reject any commit if that > file is not there). Now let's say the development further goes on and now it > is time to commit second time. At this time our hook script again will check > for the presence of project.xml file and will also check if the project.xml > got changed or not. If it got changed that means the developer did produce a > new version of this file and we accept the commit. If the version of the file > did not change then we reject it.
Here's a pre-commit hook script that requires that project.xml be in every commit. As we've discussed, I don't think this is what you really want, but it's what you say you want, so here it is and you can try it out and see what happens. I realize you are running Subversion on a Windows server, and this script is designed for UNIX or Mac OS X, but I am not a Windows programmer so I cannot write you a batch script. But perhaps seeing this script will give you ideas for how to write a batch script that does the same thing. #!/bin/sh # Parameters the Subversion server passes to this script. REPOS="$1" TXN="$2" # Binaries we use. AWK="/usr/bin/awk" SVNLOOK="/usr/bin/svnlook" # Abort if this file is not Added or Updated by this commit. REQUIRED_FILE="project.xml" MATCHED=$($SVNLOOK changed -t "$TXN" "$REPOS" \ | $AWK '/^[AU_][U ] (.*\/)?'$REQUIRED_FILE'$/ { print }') if [ -z "$MATCHED" ]; then echo "$REQUIRED_FILE was not part of the commit." 1>&2 exit 1 fi # All checks passed, so allow the commit. exit 0