SVN pre-commit hook
How to avoid system files in your repository
Today Operating systems are often creating system files to accelerate directory operations:
MacOSX: ‘.DS_Store’
Windows: ‘Thumbs.db’
KDE: ‘.directory’
….
To avoid that these files mess up your repository, create inside the 'hook'
directory a file named: 'pre-commit'
(beside a the example file ‘pre-commit.tmpl’).
It is very important to make sure that the script has execution rights ( chmod a+x pre-commit
)
#!/bin/bash REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook # Make sure that the log message contains some text. $SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" > /dev/null if [ $? -ne 0 ]; then echo "Log message not specified!" 1>&2 exit 1 fi # Do not commit crap like ... CRAP_FILES=( '.DS_Store' 'Thumbs.db' '.directory' ) for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | cut -b 5- | xargs basename); do for CRAP in "${CRAP_FILES[@]}"; do if [ "$FILE" = "$CRAP" ]; then echo "Temporary files cannot be commited (ex: '.DS_Store', 'Thumbs.db')!" 1>&2 exit 1 fi done done # All test passed exit 0 |
Enjoy!
Follow Us!