I have an SVN project with tree like this:
/project
/dir1
/subdir1
-file1
-file2
.....
-file1
-file
1) svn up --set-depth empty file/folder path
// it will delete the file from your system
2) svn up --set-depth infinity file/folder path
// it will regenerated the file from svn server to your local system
What you need is called sparse checkout.
In your case you can:
svn co --depth files file:///project project
cd project
svn up --set-depth infinity dir1 dir2 dir4
svn up --set-depth empty dir3
svn up --set-depth infinity dir3/subdir1 dir3/subdir3
Can I add subdir2 to dir3 after a checkout?
Yes: svn up --set-depth infinity dir3/subdir2
How can I update working copy created this way? Will normal "svn up" command update only these folders or full update of project will be performed?
Yes, svn up
will update only these files and folders, that is update depth will be preserved.