SaltyCrane Blog — Notes on JavaScript and web development

How to setup a subclipse project to branch/tag

I've read that branching/tagging is one of the nice features of SVN (See Mark Phippard's blog and the subversion book). However, it took me a little while to figure out how to set up my directory structure with the recommended "trunk", "branches", and "tags" folders. These are my basic step-by-step notes for how I set up my Subclipse project and then created a branch. This assumes you've already installed Subclipse and set up a repository. If you have not done that, see How to install Subversion (SVN) with Eclipse on Windows.

  1. Add your Eclipse project to the repository in a "trunk" folder
    • Start with an Eclipse project named "myproject"
    • In the "Navigator" window, right-click on your project, select "Team" > "Share Project..."
    • Select "SVN" and click "Next"
    • Select your repository. (This tutorial assumes it is located at "svn://localhost".) Click "Next".
    • In the "Enter Folder Name" dialog, select the "Use specified folder name" option and enter "myproject/trunk". The "URL:" box should show something like "svn://localhost/myproject/trunk". Click "Next".
    • Click "Finish". A new dialog will open. Select the files to commit, enter a comment, and click "OK". I got the following output in the "Console" window:
          Filesystem has no item
      svn: URL 'svn://localhost/myproject/trunk' non-existent in that revision
          Bad URL passed to RA layer
      svn: URL 'svn://localhost/myproject' non-existent in revision '234'
      mkdir -m "Initial import." svn://localhost/myproject
      mkdir -m "Initial import." svn://localhost/myproject/trunk
      checkout -N -r HEAD svn://localhost/myproject/trunk
          Checked out revision 236.
      add -N C:\path\to\myproject\.settings
          A         C:/path/to/myproject/.settings
      add -N C:\path\to\myproject\.settings\org.eclipse.cdt.core.prefs
          A         C:/path/to/myproject/.settings/org.eclipse.cdt.core.prefs
      add -N C:\path\to\myproject\.cdtbuild
          A         C:/path/to/myproject/.cdtbuild
      add -N C:\path\to\myproject\.settings\org.eclipse.cdt.managedbuilder.core.prefs
      add -N C:\path\to\myproject\.cdtproject
          A         C:/path/to/myproject/.cdtproject
      add -N C:\path\to\myproject\.project
          A         C:/path/to/myproject/.project
      commit -m "Initial import." C:/path/to/myproject/.cdtbuild C:/path/to/myproject/.cdtproject C:/path/to/myproject/.project C:/path/to/myproject/.settings C:/path/to/myproject/.settings/org.eclipse.cdt.core.prefs C:/path/to/myproject/.settings/org.eclipse.cdt.managedbuilder.core.prefs
          Adding         path/to/myproject/.cdtbuild
          Adding         path/to/myproject/.cdtproject
          Adding         path/to/myproject/.project
          Adding         path/to/myproject/.settings
          Adding         path/to/myproject/.settings/org.eclipse.cdt.core.prefs
          Adding         path/to/myproject/.settings/org.eclipse.cdt.managedbuilder.core.prefs
          Transmitting file data ...
          Committed revision 237.

  2. Create "branches" and "tags" folders in the repository
    • Switch to the "SVN Repository Exploring" perspective. (From the "Window" menu, select "Open Perspective" > "Other...". Select "SVN Repository Exploring" and click "OK".)
    • In the "SVN Repository" window, expand the tree, and right-click on "myproject", select "New" > "New remote folder".
    • In the "Create a new remote folder" dialog, expand the tree and select "myproject". For "Folder name:", enter "branches". Click "Next".
    • Enter a comment and click "Finish".
    • Expanding the "myproject" folder now shows the "branches" and "trunk" subfolders.
    • I got the following output in the "Console" window:
      mkdir -m "Created branches folder." svn://localhost/myproject/branches
    • Repeat these steps to create a "tags" folder.

  3. Create a branch
    • Switch back to the previous perspective.
    • Commit any changes you want in the branch.
    • In the "Navigator" window, right-click your project and select "Team" > "Update"
    • Right-click your project and select "Team" > "Branch/Tag..."
    • In the "Copy (Branch/Tag)" dialog, in the "To URL:" textbox, enter "svn://localhost/myproject/branches/mybranch". (The "From WC at URL:" box should read "svn://localhost/myproject/trunk".)
    • Leave the "HEAD revision in the repository" option selected, enter a comment, and click "OK".
    • I got the following output in the "Console" window:
      copy -rHEAD svn://localhost/myproject/trunk svn://localhost/myproject/branches/mybranch
  4. Switch your working copy to the branch
    • You can now switch your working copy between the trunk and the branch.
    • Right-click your project and select "Team" > "Switch to another Branch/Tag..."
    • In the "To URL:" textbox, enter "svn://localhost/myproject/branches/mybranch". Click "OK".
    • I got the following output in the "Console" window:
      switch svn://localhost/myproject/branches/mybranch C:/path/to/myproject -rHEAD
              At revision 239.
  5. You should now be able use the features discussed in Enhanced Support for Branches and Tags in Subclipse

Branching steps were taken from How to branch with Subclipse.


#1 robert commented on :

Cheers for this. I've been looking for a decent explanation of all this stuff for ages. I've now spent the last 2 hours setting up all my Eclipse projects with SVN, which is something I should have done years ago. Thanks again.

#2 canvin commented on :

thanks you for this short but helpfully example. Canvin

#3 Chandra commented on :

This short article was really helpful. I was struggling quiet a while to incorporate branches for my project. Thanks again.

#4 meirdrago commented on :

thanks , high quality tutorial

#6 Clayton E. Cramer commented on :

Excellent! Exactly what I needed, and couldn't find elsewhere.

#7 vikas commented on :

really thanks. Struggled for 3-4 hrs but understand completely now due to this very helpful doc.Thanks again

#8 Tung commented on :

Tks, very helpful tute on SVN branching in Eclipse, exactly what official eclipse manual is missing.

Anyway you can improve its ranking in Google?

#9 Eliot commented on :

Tung: Thanks for the link on your blog. That'll help the Google ranking. :)

#10 Kiran commented on :

Thanks Very Much !!! This tutorial was of great help.

#11 Henrythemouse commented on :

A super howto. Thanks for posting this. In my case there was one added step needed as I have multiple repos under one directory and the only access to my repos is with apache webdav (I'm not running the svn deamon).

For example:

parentPath = /svn

repo1 = /svn/dave http://host/svn/dave

repo2 = /svn/sue http://host/svn/sue`

If I select one of the repos to share then the "Enter Folder Name" dialog ends up like this:


which doesn't exist as a valid repo.

So at that point I created a new repository location using "http://host/parentPath". Then I could add a repo name in that dialog and it will check out that repo. This parentPath repository won't work under eclipse subversion listing, but that's not needed anyway. The files check out fine and svn functions work fine.

Without your howto I would have had a much harder time figuring it all out.

Thanks again.

#12 Mayur commented on :

Good really help full

#13 RMA commented on :

Very useful post! Thanks

#14 Deep commented on :

It was very helpful to me to setup trunk, branch and tag for the first time, Thank you! I found this guide very clear and concise.

#15 Shinde commented on :

Good explanation, thank you

#16 Dee commented on :

Many thanks for this very useful post.Cheers for this.

#17 gabriel commented on :

Thank you very much, glad I found this.

#18 anon commented on :

please can you update with the latest versions of eclipse ..


#19 TS commented on :

This is great. Why using the "Subversion recommended layout" is not the default is beyond me.

It would be wonderful if eclipse could share projects by default with a standard subversion directory structure like this. Perhaps defaulting to either
* Name on Repository: Use project name;
* Project Repository Layout:
- either Use Project Repository where it seems to allow for tags & branches on a per-project basis
i.e. myrepo/myproject/trunk
seems like what you'd typically want based on how eclipse handles importing of projects.
- or Use single project layout - where it seems to allow tags & branches that apply across all projects
i.e. myrepo/trunk/myproject
- Also sniffing could be used to see if one of these is already in practice for other projects on the server and following suit.