How do you include/exclude a certain type of files under Subversion?

Solution 1:

You're probably safest excluding particular filetypes, rather than picking those you want to include, as you could then add a new type and not realize it wasn't versioned.

On a per-directory basis, you can edit the svn:ignore property.

Run

svn propedit svn:ignore .

for each relevant directory to bring up an editor with a list of patterns to ignore.

Then put a pattern on each line corresponding to the filetype you'd like to ignore:

*.user
*.exe
*.dll

and what have you.

Alternatively, as has been suggested, you can add those patterns to the global-ignores property in your ~/.subversion/config file (or "%APPDATA%\Subversion\config" on Windows - see Configuration Area Layout in the red bean book for more information). In that case, separate the patterns with spaces. Here's mine. # at the beginning of the line introduces a comment. I've ignored Ankh .Load files and all *.resharper.user files:

### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output, and
### while importing or adding files and directories.
# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
global-ignores = Ankh.Load *.resharper.user

Solution 2:

This can be achieved using the svn:ignore property, or the global-ignores property in your ~/.subversion/config file. (Scroll to the top of that first link to see instructions on editing properties.)

By using svn propset or svn propedit on a directory, you will be able to make Subversion ignore all files matching that pattern within the specific directory. If you change global-ignores in ~/.subversion/config's [miscellany] section, however, Subversion will ignore such files no matter where they are located.

Solution 3:

See blog post svn:ignore.

I know using TortoiseSVN that I can click on a root folder where I have something checked out and can add arbitrary properties by selecting the "Properties" menu item. In this case you would just specify file patterns to exclude.

The blog post for command line stuff, but I'm sure it will work fine with whatever client you're using.

Solution 4:

At the lowest level, SVN allows you to ignore certain files or patterns with svn:ignore attribute. VS add-ins for SVN such as VisualSVN will automatically ignore those files on your behalf. If you're using TortoiseSVN, you can right-click files and folders in Explorer and choose Add to Ignore List.

Solution 5:

Another way, when using TortoiseSVN, you can select "Commit..." and then right click on a file and move to changelist "ignore-on-commit".