Subversion has an interesting operating philosophy:
One of the fundamental rules of Subversion is that a “push” action does not cause a “pull”, nor the other way around. Just because you're ready to submit new changes to the repository doesn't mean you're ready to receive changes from other people. And if you have new changes still in progress, then svn update should gracefully merge repository changes into your own, rather than forcing you to publish them.
One of the side effects of this is that you can have a repository with the structure:
webapp +-- images +-- js +-- huge-dir
You can say:
svn update -N webapp #pull down webapp and no subdirs cd webapp svn update images js # ... stuff happens ... svn update
The result is that you can pull down the images and js subdirectory, but not huge-dir. When you do the svn update to pull in changes, subversion does not automatically pull down huge-dir.
This can be a good thing, as it allows you to run a svn update without pulling in stuff you don't want.
But, yesterday, I wanted to pull down all the directories - in other words, I wanted:
To grab huge-dir. I read up on Subversion, but couldn't find the right incantation to do this.
svn update `svn ls`
svn ls gets a list of all the files in current directory from the server, and svn update explicitly updates them. I'm sure there's a cleaner way to do this, though in a hurry, this worked.
The svn ls is also a nice reminder that Subversion isn't just about commits and updates - it's actually a remote filesystem that you can play with as needed.