If you want bundles not included with TextMate, you can perform a subversion checkout or if you are an inexperienced Subversion user you can use the GetBundles-Bundle contributed by Sebastian Gräßl. For more information see the Bundles section of the manual.

If you want to checkout all bundles from the repository so that TextMate can use them, quit TextMate, open, and run:

mkdir -p /Library/Application\ Support/TextMate 
cd !$
export LC_CTYPE=en_US.UTF-8 # assuming you don't have this setup already 
# for tcsh instead use: setenv LC_CTYPE en_US.UTF-8 
svn co ./

If you get an error "svn: Can't recode string", then you may need to unset the LC_ALL environment variable:

export LC_ALL=

IMPORTANT: If you checkout all bundles, you need to keep updating them, and you should switch version checks in TextMate to “Cutting Edge” since bundles at the repository do often use cutting edge features. Grant Hutchins has written a shell script to easily update the bundles to their latest versions without any LC_CTYPE errors regardless of your localization settings. Just save this as "mateup" or something and drop it in /usr/local/bin. Note that this script assumes that svn is in your path.

cd /Library/Application\ Support/TextMate 
export LC_CTYPE=en_US.UTF-8
sudo svn update
osascript -e 'tell app "TextMate" to reload bundles'

To make it executable, make sure to run:

sudo chmod +x /usr/local/bin/mateup

Ben Bleything wrote an alternate mateup script that offers a bit more flexibility and customisation. It's too long paste here, but visit this link for an up-to-date copy of the code along with some background info and instructions.