SVN checkout ignore folder

SvnBuild Automationcruisecontrol.netSvn Checkout

Svn Problem Overview


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.

Svn Solutions


Solution 1 - Svn

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 - Svn

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 - Svn

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.

Solution 4 - Svn

This is in TortoiseSVN client 1.7.1 (might be available in some older versions as well):

  • SVN checkout --> Select URL of repository

  • Click on "Checkout Items" (under Checkout Depth) and select only the folders required!

Solution 5 - Svn

Yes, Subversion 1.5 has a feature called Sparse checkouts that can do exactly this sort of thing.

Solution 6 - Svn

You could put the docs folder in an external repository and then use svn checkout --ignore-externals.

Solution 7 - Svn

I found this question looking for a way to check out the WebKit sources while excluding the regression tests. I ended up with the following:

svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
  --depth immediates

cd WebKit
find . \
  -maxdepth 1 -type d \
  -not -name '.*' \
  -not -name '*Tests' \
  -not -name 'Examples' \
  -not -name 'Websites' \
  | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)

Note you can change the exclusions as you see fit, but .* is recommended to skip the working directory (which is already up to date) and all of the .svn directories.

Solution 8 - Svn

I have recently resolved the same task. The idea is to get the immediate list of folder/files under the repository exclude the entries you need, then check out the remaining folders and update the immediate files if any. Here is the solution:

    # Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
    # This files are to be excluded (folders are ending with '/')
    # this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
    # Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
    # Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
    # Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
    # Initial nonrecursive checkout of repository - just empty
    # to the current (./) working directory
svn co $rpath ./ --depth empty && \
    # Update the files
svn up $files &&\
    # Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`

Change to source working directory. Copy the commands. Paste. Change appropriate URL and exclude pattern. Run the command.

Thanks,

Solution 9 - Svn

No, ignore is only for adding files.
You can use sparse checkouts (if you use svn 1.5)

Solution 10 - Svn

As a few others have mentioned, you can just use svn:externals properties and then the --ignore-externals option when you checkout. One thing to note, however, is that svn:externals does not necessarily need to refer to another repository. It can be a reference to some other folder in the same repo.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZoteView Question on Stackoverflow
Solution 1 - SvnJon TopperView Answer on Stackoverflow
Solution 2 - Svntommy_turrellView Answer on Stackoverflow
Solution 3 - SvnmxclView Answer on Stackoverflow
Solution 4 - SvngammayView Answer on Stackoverflow
Solution 5 - SvnGreg HewgillView Answer on Stackoverflow
Solution 6 - SvnJohn MillikinView Answer on Stackoverflow
Solution 7 - SvnrgovView Answer on Stackoverflow
Solution 8 - Svnbv.View Answer on Stackoverflow
Solution 9 - SvnPeter ParkerView Answer on Stackoverflow
Solution 10 - SvnNik ReimanView Answer on Stackoverflow