Jump to: navigation, search

Difference between revisions of "CVS FAQ"

(I got an 'Unknown response' while trying to perform CVS browsing. What went wrong?)
(I can't get keys generated using Putty to work with Eclipse)
Line 276: Line 276:
 
     support Putty's key by using the latest J2SE in the near future, but Eclipse  
 
     support Putty's key by using the latest J2SE in the near future, but Eclipse  
 
     3.0/3.1 will not be able to use it because they must run on J2SE 1.4.0. This  
 
     3.0/3.1 will not be able to use it because they must run on J2SE 1.4.0. This  
     is explained more in bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=84281">https://bugs.eclipse.org/bugs/show_bug.cgi?id=84281</a>.</p>
+
     is explained more in bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=84281 84281].</p>
  
 
=== Why do CVS extssh connections fail on Fedora Core 4 ===
 
=== Why do CVS extssh connections fail on Fedora Core 4 ===

Revision as of 08:53, 2 June 2006

Contents

Getting Started

How do I get a project into my workspace from CVS?

  1. Choose File > Import from the main menu
  2. Select CVS > Projects from CVS and click Next
  3. Click on Create a new repository location and click Next
  4. Fill in the location information identifying your repository and click Next.
  5. Click om the Use an existing module and select the project or projects you want to check out.
  6. Click Finish
The project now exists in your workspace.

How do I put a project into CVS from my workspace?

  1. Select the project in the Navigator or other view.
  2. From the context menu choose Team->Share Project...
  3. Fill in the location information identifying your repository and click Next.
  4. Click Finish and the Sharing wizard closes and the Commit wizard opens.
  5. Supply a release comment and click Finish to commit the project contents to the repository.

The project now exists in the repository.

I already have a project checked out from CVS with the command-line tool. How do I use it in Eclipse without having to check out the whole project again?

  1. Create a project in the workspace.
  2. File->Import, select File System, locate your files, click Finish.
  3. Select the project in the Navigator or other view.
  4. Context Menu->Team->Share Project...
  5. The wizard should tell you that it found all the necessary information. Click Finish.

Eclipse has now shared the project with the CVS repository.

Browsing the Repository

Why don't my branches and versions show up when I am browsing?

When you are browsing in the CVS Repositories view, you may expect to see branch and version tags which you have previously created. In CVS, such tags are stored on individual files rather than on projects or folders. Rather than scan every file in the repository, Eclipse only scans one well-known file, .project, which should exist in every Eclipse project. It is possible that you have other interesting tags that do not appear on .project but which you would like to show up in the CVS Repositories view.

To make these tags appear, do the following:

  1. Open the CVS Repositories view.
  2. Expand HEAD and select the project for which you want to configure tags.
  3. Context Menu->Configure Branches and Versions...
  4. In the "Browse files for tags" table, select one or more files that contain tags you would like to see.
  5. Click "Add Selected Tags".
  6. Click "OK".

The CVS Repositories view will now display the chosen tags under the Branches and Versions categories. In addition, these tags will show up in other tag-related operations, such as "Replace With->Branch or Version...".

Why do some modules defined in CVSROOT/modules appear empty in the CVS Repositories view?

Some modules are not expandable because their definition is complex and difficult to parse on the client. These modules can still be checked out properly using the Check Out menu item from the module's context menu.

When I expand HEAD in the CVS Repositories View, it is always empty even though I know the repository has contents. Whats wrong?

If you also see messages from the server like "-f server: ...", this indicates that your CVS server has not been configured properly. Here is the line as it should appear in the "/etc/inetd.conf" file (example from AIX but the problem has also been seen on Solaris):

    cvspserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/usr/cvsroot pserver

The key is the 2nd copy of "cvs". The online cvs book at http://cvsbook.red-bean.com has it right (although I thought it was a typo so never tried it). Look for "The pserver access method is not working" section. Part of the reason I got this wrong is that the linux xinetd configuration does not duplicate the name of the program. At one point I just copied the fields from the linux config into the fields in the AIX inetd.conf file. Now that I know what to look for, the other entries in the inetd.conf file have the program name duplicated.

Server Issues

What server versions of CVS are supported by Eclipse?

In 3.0, Eclipse supports CVS version 1.11.1p1 or higher, running on a Linux or UNIX server and CVSNT 2.0.58d or later, when properly configured. Eclipse 2.1.2 and before does not work with CVS versions greater than 1.11.6. CVSNT versions prior to 2.0.58d are not supported but some versions have been reported to work with few problems. There are also cases where newer server versions are required for some functionality. For instance, incoming change sets in the synchronize view require CVS version 1.11.5 or beyond to work properly (see bug 81960)</p>

Why doesn't Eclipse 2.1.x work with CVS server versions 1.11.7 and beyond?

Most of the interesting Eclipse CVS functionality relies on the format of the messages and the change in format made in 1.11.7 breaks the parsing in Eclipse versions prior to 2.1.3. Most of the incompatibilities for 1.11.x were addressed in 2.1.3. See bugs 46655 and 49056 for patches and workarounds for previous versions of Eclipse or remaining incompatibilities. As for 1.12.x releases of CVS, Eclipse 2.1.x is not compatible with this server version. Eclipse 3.0 is compatible with 1.12.7 but future releases of CVS may cause similar breakages. In such cases, Team>Update and Team>Commit should still work but the more advanced work flows (e.g. synchronizing) may not be reliable.

Why aren't older (pre 2.0.58d) CVSNT versions supported?

The reason older CVSNT versions aren't supported is because traditionally its development effort had been smaller and has lagged behind that of CVS Linux, thus its quality tends to be of issue. That has changed as of version 2.0.58d which is now supported (when properly configured) on Eclipse 3.0 and beyond.

Where can I get CVS for UNIX or Windows?

CVS for UNIX can be downloaded by going to http://ximbiot.com/cvs/. CVSNT can be downloaded by going to http://www.cvsnt.org.</p>

Where can I find documentation on CVS?

The CVS manual can be found by going to http://ximbiot.com/cvs/.

When I perform a Replace With or Update operation, Eclipse tells me that option -C is not supported. What's wrong?

This error indicates that your server version is CVS 1.10 or before. The -C option was introduced in version 1.11.

I performed a Replace With or Override and Update and one of the files involved ended up with strange characters in it. Why?

This error indicates that your server version is CVS 1.11 which has a bug when replacing a locally dirty file. Go here to see the supported CVS versions.

I got a "received broken pipe signal" error. What does it mean?

Eclipse sometime performs multiple commands within a single connection to the server. This may cause problems with CVS server that are running server scripts in reponse to certain commands.

How do I use a local connection with Eclipse?

Eclipse does not support the use of the local connection method as this requires a CVS client that also includes the CVS server code in it. Command line cvs uses the same executable for the client and the server whereas Eclipse is a client only. Since the repository is on the same machine as the client, you should be able to use pserver.

With CVSNT, why do I get the error: "Error fetching file revisions"?

This problem has several causes. One is the use of a backslash (\) in the repository path instead of a slash (/). Another can be a mismatch in the case of the letters in the repository path. See bug 56635 for more details.

Why can't I get Eclipse to work with CVSNT and mapped network drives?

The problem is that CVSNT only supports using the local connection method with network drives and Eclipse does not support this connection method.

Using CVSNT, Why do I get the error "cvs [server aborted]: cannot find .: No such file or directory"?

I think the problem is that of user rights on the machine CVSNT is running on. You might try one or more of the following options:

  • create a group having full access rights to the CVSNT repository directory structure plus the temp folder CVSNT is using. This is easiest if you specify a separate CVSNT temp directory such as "c:\cvstemp" using the Advanced tab in the
    CVSNT control panel. (The default temporary directories in "C:\WINNT\TEMP" and "C:\Documents and Settings" have access restrictions under Win2000 and WinXP).
  • turn off impersonation in CVSNT
  • add all CVS users to PowerUsers on the machine CVSNT is running on
 </li>
 

Why do I get the error "Resource <name> is not a child of folder <folder>"?

CVSNT has a separate option called Emulate "-n checkout" bug that must be enabled for Eclipse to work properly. This is because the "bug" in question is the behavior of a 1.11.x server which Eclipse requires.

Why can't I set the keyword substitution mode for CVSNT using Eclipse?

CVSNT has a non-standard way of dealing with keyword substitution so you will need to use a CVSNT specific client to modify the keyword substitution mode.

Using SSH with CVS

How do I use SSH to communicate with the server?

The pserver protocol sends passwords over the network in plaintext. Many people prefer to establish a secure connection using SSH. Eclipse supports two methods of connecting to CVS repositories using SSH.

To use the Eclipse's built-in SSH support, simply specify "extssh" as the connection method type when creating the repository connection.

To use SSH support from an external tool, you must:

  1. Specify "ext" as the connection method type when creating the repository connection.
  2. Window->Preferences->Team->CVS->Ext Connection Method. On this page, specify the name and location of your external ssh client. (For example, "C:\plink.exe" or "/usr/local/bin/ssh"). Also specify the name and location of the CVS binary on the server. The default value is often correct.
  3. Ensure that you can log on to the server using the external SSH tool without specifying a password.

Note: In Eclipse 2.1, you can also specify (on the Ext Connection Method preference page) the parameters to be passed to the SSH client, including the password.

What is the difference between ext and extssh?

The extssh connection method uses a built-in SSH client. The ext connection method allows you to specify an external SSH client to use. For extssh to work with Eclipse 2.1.x and before, the server must be running an SSH server with SSH1 protocol compatibility. If extssh does not work, it is possible that the server is running only the SSH2 protocol. If this is the case, you must configure the ext connection method with an external SSH client. In Eclipse 3.0 and beyond, extssh does support SSH2.

My SSH server only support SSH2 protocol and I'm using Eclipse 2.1.x

Eclipse comes with a built-in SSH connection method called 'extssh'. Prior to Eclipse 3.0, this method only supported SSH1 servers. If your server is running SSH2 and you want to use Eclipse 2.1.x to connect to that server you have two options:

  1. use a command line SSH client that supports SSH2 with the 'ext' connection method
  2. download a plugin created by JCraft that provides a SSH2 connection method.

To use the 'ext' connection method, download and install an SSH command line client for your operating environment. In the Team > CVS > Ext Connection Method preference page, configure the location of the SSH executable and how the executable is to be called. For the ext method to work the CVS client on your server must support the server mode. You can verify this by running cvs --help-commands and ensure that the server command is supported.

How do I set up public-key authentication for an external SSH client?

The steps for setting up public-key authentication vary depending on your SSH client. However, they all follow this set of common steps:

  1. Use the client program (or a utility that came with it) to generate a public/private key pair. This program might be called ssh-keygen or puttygen.exe.
  2. Copy the public key to the server. This is often done by pasting the public key into the file /home/user/.ssh/authorized_keys.

When I try to connect using SSH, it tells me "Could not chdir to home directory /home/user/myname". What did I do wrong?

This often happens when using SourceForge projects for the first time, but may occur on other servers as well. You must manually log in to the server, using an interactive SSH session, in order to create your home directory for the first time. After this, you will be able to log in successfully.

Use your SSH client to connect to the server (e.g. cvs.sourceforge.net) and log in with your username and password. Your home directory will be created for you.

I got an 'Unknown response' while trying to perform CVS browsing. What went wrong?

A problem has been reported that involves the Cygwin SSH client (see bug 21180). Try using another SSH client such as Putty or OpenSSH.

I can't get keys generated using Putty to work with Eclipse

Putty's private key is encrypted by AES, but JCE (Java Crtptgraphy Extension) included in J2SE 1.4.x does not support AES. So, at present time, there is no plan to support it. Of course, JSch (the SSH2 client used in Eclipse) may support Putty's key by using the latest J2SE in the near future, but Eclipse 3.0/3.1 will not be able to use it because they must run on J2SE 1.4.0. This is explained more in bug 84281.

Why do CVS extssh connections fail on Fedora Core 4

There is an issue with Sun's JDK 1.4.2 and Fedora Core 4 that causes extssh connections to fail with the message:

    CVS Communication error: 
       org.eclipse.team.internal.ccvs.ssh2.CVSSSH2ServerConnection$SSH2IOException:
          Invalid argument or cannot assign requested address

The issue seems to be related to both IPv6 and IPv4 being available in FC4. The solution is to add

   -Djava.net.preferIPv4Stack=true

with the -vmargs option when eclipse is started.

Why does CVS extssh prompt for my password even when it is saved?

This problem has been seen on servers that have a problems in a particular authentication method. This will cause extssh to believe that there has been an authentication failure which trigger a password prompt. See bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=119008">119008</a> for details.