Committer access (Buckminster)
Setting up Subclipse for committer access to the Buckminster repo
In order to commit to our SVN repository at Eclipse.org, you need to setup the svn+ssh protocol. After some trial and horror, these are the steps I made to make everything work smoothly.
- Install Subclipse into your Eclipse IDE using the Eclipse update manager. Point your update manager to http://subclipse.tigris.org/update_1.0.x
- Download and install a ssh client that will allow you to login to the server. I use Putty from: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- Using your ssh client and your committer login/password, login to "dev.eclipse.org".
- if you have been given a restricted shell you can not do much - if you are using Putty and just hit enter, the putty SSH client will terminate without a message. So - if you can hit enter at the prompt, you can proceed with the steps below. Otherwise contact firstname.lastname@example.org and explain your problem.
- Make sure you are in your home directory and create a public/private key pair with ssh-keygen. Do not use a passphrase (you avoid the passphrase by using the -N '' at the end of the command - that is -N followed by a space and then two single quotes). If you do use a passphrase, you'll be asked for it over and over again by the svn client:
- ssh-keygen -b 1024 -t dsa -f mykey -N ''
- Create the .ssh folder and copy your public key to the authorized_keys file in that folder.
- mkdir .ssh
- cp mykey.pub .ssh/authorized_keys
- Set the correct permissions
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
- Copy the contents of the private key (the file named mykey with no extension) to your clipboard and paste it into temporary file on your local computer.
- Convert the key into a format that is usable by PuTTY and plink.
- Download http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe (if this is not already included in your Putty installation)
- Import the temporary file you just stored. Use Conversions -> Import key.
- Save the converted private key to a file of choice by clicking on "Save Private Key" and then select a filename - I use "c:\Documents and Settings\Thomas Hallgren\SSHKeys\eclipse_key.ppk". (Note that you should *not* press "generate" that creates a new key. Also note that the PuttyKeyGenerator may crash when selecting location and file name to save the key in - check if the file was created if you suspect that it crashed, and try again). You can check that the generated .ppk file starts as follows if you are having trouble.
PuTTY-User-Key-File-2: ssh-dss Encryption: none
- Download and install Tortoise for SVN from: http://tortoisesvn.net/downloads. The plink.exe supplied with Tortoise is a command line client that is silent (i.e. doesn't pop up an annoying cmd window each time it's called).
- Find your subversion configuration file and the section called [tunnels]. Make sure this section is not commented out. The file is found at %APPDATA%\Subversion\config on a typical windows installation.
- Add the following line, substituting your home folder, login name, and the path to the private key file that you saved in step #1. Be sure to use double backslashes.
- ssh = "C:\\Program Files\\TortoiseSVN\\bin\\TortoisePlink.exe" -ssh -l <your login> -i "c:\\Documents and Settings\\<your home>\\SSHKeys\\eclipse_key.ppk"
You should be able to use subclipse from now on. Our SVN repo is at:
But note that when you supply a URL to set up access you should not include the path - the URL is: svn+ssh://dev.eclipse.org/svnroot/tools
If you have previously set up anonymous access to (for read only) access to buckminster. Use Subclipse Repository Relocation.
- Open all your Buckminster projects in the Eclipse IDE
- use the object menu (right mouse click) over the previous location) and select "Relocate"
- use the new URL svn+ssh://dev.eclipse.org/svnroot/tools (no buckminster at the end)
- When you hit Finish, the Finish button will get pressed in, and then nothing appears to happen for a long time...
In order to use the TortoiseSVN GUI you also need to tell that client what SSH it should use (for some reason look at the SVN config file).
- Right click on any folder in your normal Windows file explorer. Select TortoiseSVN -> Settings -> Network.
- Copy the ssh = ... line from the config file. Leave out the leading "ssh =" and substitute all double \\ for single \. (keep the " characters if you have spaces in the file paths, otherwise the quotes are not needed).
Now TortoiseSVN should work fine as well.
Observations and hints
If you have PuTTY installed, be sure you have the "Default settings" configured to use SSH version "2" or "2 only", otherwise the SSH key doesn't work.
If you happen to set up the PuTTY Default Settings for SSH version "1" and you are not able to change this setting using PuTTY gui (this can happen e.g. if you import registry settings), you can edit the windows registry (HKEY_CURRENT_USER/Software/Simon Tatham/PuTTY/Sessions/Default%20Settings/SshProt, set to value "2").
Working and merging.
All Buckminster development work should be done on the trunk. The CQUERY to set things up is http://www.eclipse.org/buckminster/samples/queries/buckminster-dev.cquery. Once you've materialized your workspace, it's likely that you want to "Relocate" from the "svn" protocol" to "svn+ssh". Unlike CVS, this is not done automatically using our svn client (we need to address that as a bugzilla).
NOTE: The "normal" buckminster.cquery will give you the 3.2.x branch. You have to use buckminster-dev.cquery to get the trunk!
We do Buckminster work on the trunk and merge relevant things to the 3.2.x branch. This does *not* apply to Cloudsmith work. Cloudsmith work uses Eclipse 3.2.x everywhere. We don't want to be sensitive to changes in Eclipse 3.3 when developing the Cloudsmith server or website. So it's OK to add patches driven by Cloudsmith work to the 3.2.x branch and later merge them to the trunk.
Before you do anything, I recommend reading the "Subclipse - Subversion Eclipse Plugin" -> "Tasks" -> "Maintaining branches" chapter in the Eclipse Help.
- Set up two workspaces. One for the trunk (using buckminster-dev.cquery) and one for branches/3.2.x (using buckminster.cquery).
- Use Eclipse 3.3M5eh (or what's latest) on the trunk and Eclipse 3.2.2 on the 3.2.x branch.
- Perform relevant changes on the trunk. Commit these changes.
- Switch Eclipse (and workspace) to the 3.2.x.
- Use Team -> Merge. Change the URL so that the "/branches/3.2.x/" part reads "/trunk/"
- Click "Show Log" and select the relevant version (i.e. the last one).
- Click Merge.
- Verify that everything looks OK, change things if necessary.
- Commit the 3.2.x branch.