Can I ignore a folder on svn checkout? I need to ignore DOCs folder on checkout at my build server.

edit: Ignore externals isn't an option. I have some externals that I need.


Solution 1:

You can't directly ignore folders on a checkout, but you can use sparse checkouts in svn 1.5. For example:

$ svn co http://subversion/project/trunk my_checkout --depth immediates

This will check files and directories from your project trunk into 'my_checkout', but not recurse into those directories. Eg:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

Then to get the contents of 'bar' down:

$ cd bar && svn update --set-depth infinity

Solution 2:

Yes you can using SVN 1.6. You will need to do a checkout first then mark the folder for exclusion then delete the unwanted folder.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

From now on any updates to the working copy won't repopulate the docs folder.

See http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ and http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion for more details.

Tom

Solution 3:

With versions prior to 1.5 I have found that if you checkout only the top most folder and then selectively update, from then on updates only effect what you have checked out. Ie.

svn co -N foo
cd foo
svn up -N bar
svn up

The -N flag makes the operation non-recursive. The above will not check out anything else at the foo level, eg. say there is a folder lala, the final svn up will not check out that folder, but it will update bar.

But at a later time you can svn up lala and thus, add it to the checkout.

Presumably this also works with 1.5.