views:

218

answers:

2

We are using CVS for around 50 java-projects which we develop using Eclipse, and build using Hudson.

We have now reached the point where we want to migrate to something better, and I am considering that using git masquerading as a CVS server might be exactly what would suit us in terms of learning curve.

We have few but long-lived branches - preferrably on a subset of files (we would essentially like to be able to have a customer specific branch where we can have only the few files actually changed, but add more files later if needed, and the tooling should understand this).

We are only a few active developers co-located.

We usually work with a workspace per main project with a complete checkout of all projects needed to build that. We do not use Maven, and only use ant to build with Hudson.

I understand that git-support-in-Eclipse has been adopted as an actual Eclipse project. Any experiences with that?

I will most likely set up a local git server to do evaluation with. I'd appreciate tips on what to explicit look for which might be troublesome.


Edit:

We do not use $Id$ or similar keyword expansion (since this induces changes in the source files which we are not interested in knowing about.


So, I'd appreciate any experiences with git in scenarios similar to ours :)


EDIT 2009-10-25: Question is still open. We have decided on moving away from branches (too much pain) and go into multiple source trees - one pr branch. This removes a major painpoint with CVS, but we still want to be able to develop without network access to the repository. Hence git is still very relevant, and I still would like to hear experiences from the trenches.

+1  A: 

Just a comment:

CVS is a centralized VCS, meaning all your projects can fit within one CVS repository: you can checkout any sub-part.

Git is a DVCS, and in the Distributed world, one repository = one "component" (or "module" or "project", ...).
You can use submodules to aggregate several Git repository under one "umbrella" one.
If you clone a Git repository, you will get all the history (unless you limit the depth of the cloning).

So the organization of your projects will be different with Git, and I am not sure if the vision of one "CVS-like" Git server will still apply.

VonC
Thank you for clarifying that the terms have a slightly different meaning with git. I will keep this in mind. We are interested in keeping the "one master repository" approach but each of several applications consist of several Eclipse projects, many of which are library projects.
Thorbjørn Ravn Andersen
+2  A: 

From git-cvsserver manpage:

DESCRIPTION

This application is a CVS emulation layer for git.

It is highly functional. However, not all methods are implemented, and for those methods that are implemented, not all switches are implemented.

Testing has been done using both the CLI CVS client, and the Eclipse CVS plugin. Most functionality works fine with both of these clients.

LIMITATIONS

Currently cvsserver works over SSH connections for read/write clients, and over pserver for anonymous CVS access1.

CVS clients cannot tag, branch or perform GIT merges.

git-cvsserver maps GIT branches to CVS modules. This is very different from what most CVS users would expect since in CVS modules usually represent one or more directories.

1. Actually support for non-anonymous pserver was recently send to git mailing list for inclusion, and is currently in 'pu' (proposed updates) branch, as "git-cvsimport: add support for cvs pserver password scrambling."

Jakub Narębski
Thanks. Do you have personal experience with this you'd like to share?
Thorbjørn Ravn Andersen
No, I don't have personal experience with git-cvsserver; thats why I referred to documentation (my addition is note about pserver with password, and emphaising important parts).
Jakub Narębski