Although this article is primarily for Subclipse plugin, it may apply to Subversive plugin as well. If you get this error read on to see if this fix works for you.
A few definitions first. Eclipse is a popular IDE for developing software, particularly Java, PHP, and C++. Subclipse is a plugin that can be installed on Eclipse making SVN tools available to the IDE's user. SVN is Subversion which is one of the most popular free source control software applications.
When I installed Subclipse on Eclipse on Windows 7 platform I didn't have trouble checking out and manipulating my SVN project which is hosted somewhere remotely. However when my friend did he saw the following error when trying to check out an SVN project:
If you are using SVN command line then the SVN command to check out a project looks like 'svn co svn+ssh://...'
How do I fix this error?
Possible Solution #1
If you check out an SVN project with SSH meaning that the SVN URL is prefixed with 'svn+ssh://', read on. Otherwise go to Possible Solution #2 below. The svn+ssh combination ensures that your communication with the SVN server is encrypted and secure. This means that Eclipse needs to know how the SSH protocol works.
Here's the solution. Install TortoiseSVN and tell Subversion how to run SSH protocol by following these steps.
Install TortoiseSVN
Download the latest TortoiseSVN from their official website and install it.
Locate Subversion's configuration file
If you are using Windows 7 or Windows Vista it should be located at
C:\Users\[User]\AppData\Roaming\Subversion\config
If you are using Windows XP it should be located at
C:\Documents and Settings\%USERID%\Application Data\Subversion\config
Edit Subversion's configuration file
Open your SVN configuration file and locate the line where 'ssh' is commented out like this:
# ssh = $SVN_SSH ssh
This is where you need to let SVN know where the SSH executable file is. Change the line to
ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe
If you don't want to enter user name and password every time you use SVN then change the line to
ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -l user -pw password
If you use a private key for authentication then change the line to
ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -i C:/my-private-key.ppk
Using private/public key authentication to checkout code via SVN is discussed at Guide on How to use Eclipse to SVN+SSH Checkout Code from Amazon EC2. I am using a private key and my subversion configuration file looks like this:
### This file configures various client-side behaviors. ### ### The commented-out examples below are intended to demonstrate ### how to use this file. ### Section for authentication and authorization customizations. [auth] ### Set store-passwords to 'no' to avoid storing passwords in the ### auth/ area of your config directory. It defaults to 'yes'. ### Note that this option only prevents saving of *new* passwords; ### it doesn't invalidate existing passwords. (To do that, remove ### the cache files by hand as described in the Subversion book.) # store-passwords = no ### Set store-auth-creds to 'no' to avoid storing any subversion ### credentials in the auth/ area of your config directory. ### It defaults to 'yes'. Note that this option only prevents ### saving of *new* credentials; it doesn't invalidate existing ### caches. (To do that, remove the cache files by hand.) # store-auth-creds = no ### Section for configuring external helper applications. [helpers] ### Set editor to the command used to invoke your text editor. ### This will override the environment variables that Subversion ### examines by default to find this information ($EDITOR, ### et al). # editor-cmd = editor (vi, emacs, notepad, etc.) ### Set diff-cmd to the absolute path of your 'diff' program. ### This will override the compile-time default, which is to use ### Subversion's internal diff implementation. # diff-cmd = diff_program (diff, gdiff, etc.) ### Set diff3-cmd to the absolute path of your 'diff3' program. ### This will override the compile-time default, which is to use ### Subversion's internal diff3 implementation. # diff3-cmd = diff3_program (diff3, gdiff3, etc.) ### Set diff3-has-program-arg to 'true' or 'yes' if your 'diff3' ### program accepts the '--diff-program' option. # diff3-has-program-arg = [true | false] ### Section for configuring tunnel agents. [tunnels] ### Configure svn protocol tunnel schemes here. By default, only ### the 'ssh' scheme is defined. You can define other schemes to ### be used with 'svn+scheme://hostname/path' URLs. A scheme ### definition is simply a command, optionally prefixed by an ### environment variable name which can override the command if it ### is defined. The command (or environment variable) may contain ### arguments, using standard shell quoting for arguments with ### spaces. The command will be invoked as: ### <command> <hostname> svnserve -t ### (If the URL includes a username, then the hostname will be ### passed to the tunnel agent as <user>@<hostname>.) If the ### built-in ssh scheme were not predefined, it could be defined ### as: # ssh = $SVN_SSH ssh ssh = C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe -i C:/my-ec2-key.ppk ### If you wanted to define a new 'rsh' scheme, to be used with ### 'svn+rsh:' URLs, you could do so as follows: # rsh = rsh ### Or, if you wanted to specify a full path and arguments: # rsh = /path/to/rsh -l myusername ### On Windows, if you are specifying a full path to a command, ### use a forward slash (/) or a paired backslash (\\) as the ### path separator. A single backslash will be treated as an ### escape for the following character. ### Section for configuring miscelleneous Subversion options. [miscellany] ### Set global-ignores to a set of whitespace-delimited globs ### which Subversion will ignore in its 'status' output, and ### while importing or adding files and directories. # global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store ### Set log-encoding to the default encoding for log messages # log-encoding = latin1 ### Set use-commit-times to make checkout/update/switch/revert ### put last-committed timestamps on every file touched. # use-commit-times = yes ### Set no-unlock to prevent 'svn commit' from automatically ### releasing locks on files. # no-unlock = yes ### Set enable-auto-props to 'yes' to enable automatic properties ### for 'svn add' and 'svn import', it defaults to 'no'. ### Automatic properties are defined in the section 'auto-props'. # enable-auto-props = yes ### Section for configuring automatic properties. [auto-props] ### The format of the entries is: ### file-name-pattern = propname[=value][;propname[=value]...] ### The file-name-pattern can contain wildcards (such as '*' and ### '?'). All entries which match will be applied to the file. ### Note that auto-props functionality must be enabled, which ### is typically done by setting the 'enable-auto-props' option. # *.c = svn:eol-style=native # *.cpp = svn:eol-style=native # *.h = svn:eol-style=native # *.dsp = svn:eol-style=CRLF # *.dsw = svn:eol-style=CRLF # *.sh = svn:eol-style=native;svn:executable # *.txt = svn:eol-style=native # *.png = svn:mime-type=image/png # *.jpg = svn:mime-type=image/jpeg # Makefile = svn:eol-style=nativeYou are done. Check out your SVN project in Eclipse again. If this solution does not work for you read on!
Solving 'Commit Operation Failed' Error ▶
If you have any questions please let me know and I will do my best to help you!