Subversion Bash "Shortcuts"
Subversion is awesome, but it's command line interface is "non-intuitive". Here are some short-cuts I created to remember the commands. The most useful are:
- svn_add_all [folder] - svn add any files not under version control
- svn_revert_all [folder] - revert any changes to folder recursively
- svn_ignore [folder] [pattern] - add the pattern to the folder's ignore list
Add this to your ~/.bashrc file (or ~/.bash_aliases in Ubuntu):
# svn_add_all [folder] - recursive add folder's unversioned files (respect svn:ignore and spaces in filenames)
# svn_trim_all [folder] - recursive svn-deletes missing files (deleted by user, but not svn-deleted)
# svn_revert_all [folder] - recursive revert any change in folder
# svn_ignore [folder] [pattern] - add pattern to folders svn:ignore property. Use 's around wildcards. E.g. '*' or '.*'
# svn_ignore_edit [folder] - edit svn:ignore property
svn_add_all () { svn status "$1" | grep '^?' | cut -b 8- | xargs -I {} svn add "{}"; }
svn_trim_all () { svn status "$1" | grep '^!' | cut -b 8- | xargs -I {} svn rm "{}"; }
svn_revert_all () { svn revert "$1" -R; }
svn_ignore () { FILE="$RANDOM.ignore"; svn propget svn:ignore "$1" > $FILE; echo "$2" >> $FILE;
sed -i '/^$/d' $FILE; # remove blank lines
svn propset svn:ignore "$1" -F $FILE; rm $FILE; }
svn_edit_ignore () { svn propedit svn:ignore "$1"; }
Note that these are bash functions instead of aliases. Bash functions are more flexible with parameters.