How do I only Checkout (pull down) only parts of an SVN tree with TortoiseSVN?

38,885

Solution 1

It looks like you were successful but I wanted to include a step-by-step guide in the hopes that it is helpful to others.

  1. Checkout trunk into a working copy with depth = "Only this item"
  2. Open working copy
  3. Go to repo browser from the working copy
  4. Select your desired project subfolder(s), right-click and select "Update item to revision"

This will pull only the subfolder(s) you've selected into your working copy.

Solution 2

This may be coming late, but for anyone finding this question and wondering if you could exclude existing directories: there appears to be a way to do so.

  1. Right click on the directory you want to exclude
  2. TortoiseSVN -> Update To Revision...
  3. From the Update Depth drop-down box select Exclude and press OK

That should delete the directory if it doesn't have any local mods and exclude it from further updates. If you ever need the directory back, use Michael Hackner's method above.

Solution 3

Expanding on autonomy's answer from above ...

If you have checked out a whole project and later want to exclude certain folders or files from it....

  1. Right click on the parent directory that contains the dir/file you want to exclude
  2. TortoiseSVN -> Update To Revision...
  3. From the Update Depth drop-down box select Exclude and the click on "Choose items..." and
    • select the items you want to keep
    • and deselect the items you want to exclude
    • then press OK & OK again

That should delete the directories/files you have deselected and exclude them from further updates. If you ever need the directory back, repeat the process and change your selection.

Solution 4

If you go into the project-A folder and right-click==>SVN Update, it will only update the project-A folder and it's subfolders. Then you can do the same for project-B

Solution 5

This works as well:

  1. Right click > Select SVN Checkout
  2. Select "Choose items..."
  3. Select the subfolders/items you want [1]

[1] - Do note that if you checkout subfolders partially (without all the items inside that subfolder), and files are subsequently added to that subfolder and committed, you will not get them when you perform a regular checkout.

This question is related to Can you do a partial checkout with Subversion? but with a particular context of using TortoiseSVN.

Share:
38,885
Scott Whitlock
Author by

Scott Whitlock

By day I'm a Professional Engineer, currently working as a .NET software developer. I also wrote and maintain an open source extensible application framework called SoapBox Core, and an open source C# library for communicating with Insteon home automation devices called FluentDwelling. I have decided to stop contributing to this community because it has become a site more concerned with nitpicking and rules than with allowing programmers to help other programmers.

Updated on November 11, 2020

Comments

  • Scott Whitlock
    Scott Whitlock over 3 years

    I'm using TortoiseSVN and I want to do a Checkout of an existing repository into a local directory. However, I only want to pull down certain portions of the file tree. Is there a way I can do that?

    For instance:

    /trunk
        /project-A
        /project-B
        /project-C
    

    Let's say I just want to pull down trunk, project-A and project-B. How do I do that?

  • Scott Whitlock
    Scott Whitlock over 14 years
    This is before I've even pulled it down once. Do I just create the trunk directory locally, then go in there, create the project-A folder, and then do a checkout of that project into that folder?
  • Scott Whitlock
    Scott Whitlock over 14 years
    Answering myself: yes, I had to create the trunk folder, do a checkout of trunk to this folder ("only this item"), then go into that folder, go to the Repo Browser and pull down the projects and files I wanted.
  • Adam Albrecht
    Adam Albrecht over 14 years
    Yeah you never have to pull down an entire project. From the Repo Browser, you can pull down whatever folders you want.
  • Hooch
    Hooch over 9 years
    Hello. How can I stop "tracing" one of folders? I checkout whole trunk (many projects) and selected only few. But I don't need copy of one of those projects locally. How to "remove" it?
  • informatik01
    informatik01 almost 9 years
    Thank you! Just what I needed.
  • Arindam Roychowdhury
    Arindam Roychowdhury over 7 years
    If I want to simulate above steps using svn command line, how can I do it?
  • doublehelix
    doublehelix almost 7 years
    Command line users can use these commands: svn co <URL> <localRootFolder> --depth empty svn up <localRootFolder>/project-A svn up <localRootFolder>/project-B svn up <localRootFolder>/project-C
  • Andreas Paulsson
    Andreas Paulsson over 6 years
    When you come back from selecting folders to keep/not keep, the Update Depth drop.-down has changed to Custom Depth. Do NOT change to Exclude again, just press OK. If you change it to Exclude, TortoiseSVN thinks that you want to exclude the parent folder which will fail.
  • O. R. Mapper
    O. R. Mapper about 6 years
    What if I want to check out one previously excluded item and keep (but not update) all the others?
  • eff
    eff over 5 years
    @ArindamRoychowdhury: $ svn update --set-depth exclude <target folder>, just in case it's still on your mind ;)
  • Luis Gouveia
    Luis Gouveia over 4 years
    That first option doesn't exist when you've already checked-out anything on that parent folder. That's precisely why the question was asked.