Fog Creek Software
Discussion Board




Java Implementation of CVS

I've been doing some Googling trying to find an implementation of CVS written in Java. I know there are some CVS clients written in Java, but what I'm looking for is a *server* implementation. If you know of any such implementation, even if it is in a semi-workable state I'd be interested.

Walter Rumsby
Thursday, July 17, 2003

What is your actual requirement? CVS is CVS and there's only a C implementation. I'm not aware of any real, full featured version control system written in Java, but depending on what you need, there may be some stuff out there.

On the lowest level of CVS, you need to be able to recognize differences between two files. If you look around, you'll find several java implementations of 'diff' out there.

http://www.bmsi.com/java/#diff
http://www.darwinsys.com/freeware/Diff.java

The next level is the ability to keep track of the different versions of a file that you have. Take a look at 'rcs' ( http://www.gnu.org/software/rcs/rcs.html ). I'm not aware of any java implementations specifically of rcs, you might find something along those lines. This is basically a collection of meta-data that adds further dimensions (time, branch, etc.) to the filesystem.

The final level (the complete 'SCM') adds support to coordinate multiple developers, to enable distributed functionality, coordination with other software construction tools, etc.

And then there's the client implementation...

If you need the full SCM, go with a more or less product like CVS, Subversion, or a commercial tool. Else, have a closer look at one of them, check out the different levels offunctionality they provide and look around for java implementations of those.

a2800276
Thursday, July 17, 2003

jCVS

http://www.jcvs.org/

Baruch
Thursday, July 17, 2003

From what I could tell jCVS is a CVS client - the jCVS server is just a wrapper around an exsisting CVS server.

CVS bills itself as "the open standard for version control" and I wouldn't assume their is anything about it which forces the implementation to be in C - i.e. if CVS supports a certain send/receive protocol then one could just write an app in language X that supports the same protocol.

My requirement is that I'd like to set up a server with a version control system accessible to users over the Internet. CVS is the preferred system because users connecting to the server will have CVS clients. If there was a Java version of CVS that would mean I could get up to speed a lot quicker as my current operating platform is Windows (yeah I know, CVS runs on Linux, but Java is platform independent - a CVS implementation running in a JVM should work fine).

Walter Rumsby
Thursday, July 17, 2003

Walter, you may want to try CVSNT:

http://www.cvsnt.org

Giovanni Corriga
Thursday, July 17, 2003

There is a Windows version of CVS ... http://homepages.nildram.co.uk/~tmhoyle/cvsnt-2.0.4.exe from http://www.cvsnt.org/wiki/

Christopher Wells
Thursday, July 17, 2003

If you use CVSNT, note there are several minor (and may be annoying) differences.  They are mentioned in the CVSNT FAQ. One advantage of using CVSNT is that it allows native NT/2000/XP user verification.
Also you can run a CVS server under Cygwin on NT/2000 (been there done that).  I have read that someone had a CVS server running under Interix, but I had little luck in doing a CVS server that way myself though.

A Software Build Guy
Thursday, July 17, 2003

You might want to take at look at http://subversion.tigris.org/, through it is not i v.1  yet it is ment to be the replacement for CVS.

Rasmus Brøndsted
Thursday, July 17, 2003

And the correct line is: http://subversion.tigris.org/

Rasmus Brøndsted
Thursday, July 17, 2003

Hmm,

I remember trying to install CVSNT sometime last year - the box I was working on was configured oddly so we gave up.

Anyway, given the quirks in CVSNT, doesn't the idea of a Java implementation of CVS sound a lot more practical, worthwhile, feasible, etc?

Walter Rumsby
Thursday, July 17, 2003

>Anyway, given the quirks in CVSNT, doesn't the idea of a Java >implementation of CVS sound a lot more practical, worthwhile, >feasible, etc?

Why? What makes you think that completely reimplementing a solution that's already there and has a fully functional version available would be easier than just ironing out the "quirks"? You don't mention the problems you had, and judging from the cvsnt website, the implementation seems pretty stable. The "normal" unix version has proved itself very stable and also runs fine on NT albeit using cygnus.

What benifit do you see in reimplenting in Java?

a2800276
Friday, July 18, 2003

I would base it on Subversion, not CVS if at all possible.  I personally use Subversion and it's extremely clean and documented; plus it appears that Python is the main extension language.

While it's numbered v.25, the faq states that it would have been already been called v1 had it not been a vcs, but they're being paranoid.  I personally use it as a local vcs on my XP machine; I haven't hit a single problem yet.  Hopefully a pal will install it on one of his machines and we can test a shared repository.

Subversion has a dependency on BerkeleyDB; fortunately I believe you can easily use it with Java.

sammy
Friday, July 18, 2003

"What benifit do you see in reimplenting in Java?"

Runs on all platforms that have a JVM. So, I can install essentially the same software on my Windows XP machine as I install on my OS X machine, similar configuration, etc.

Walter Rumsby
Friday, July 18, 2003

why do you want a server on many machines? one server should be enough for many projects within a single organization. remember, centralization is a feature, not a bug, of most source control systems, certainly including cvs.

mb
Friday, July 18, 2003

one more thing -- cvs can run without a server at all if you want one copy on each machine for some reason (one-person version control)

mb
Friday, July 18, 2003

No Walter, give it up. CVS NT works just fine and there are CVS versions for every Unix. Heck, CVS even ships with the Mac OS X development tools (which I guess isn't surprising considering it's unix roots).

I fact, I'll bet that there are more platforms that have CVS implementations than platforms that have JVM implementations!

Bill Tomlinson
Friday, July 18, 2003

I want the freedom to choose/change deployment platform as painlessly as possible.

And the whole "write once, run anywhere" bizniz. I can run IDEA on my OS X or Win XP box, I can run Orion on my OS X or Win XP box, HSQLDB, etc, etc, etc. I (will) have an OS X laptop an I can see situations where running a CVS server on that machine makes sense and other situations where running the server on Win XP makes sense.

If the CVS protocol is open then it should be technically feasible to provide a Java solution, it would make modifications to the system portable, etc, etc.

Walter Rumsby
Friday, July 18, 2003

Well yes, CVS is completely open in terms of it's protocols. It's all right there in the documentation and code.

It's just that no one has ever seen any need to re-write the server side simply because the software already exists and meets everyone else's need. Walter, this is just an itch that you're going to have to scratch yourself if it's that much of a problem.

Bill Tomlinson
Friday, July 18, 2003

Random subversion criticism by the author of arch:
http://lists.fifthvision.net/pipermail/arch-users/2003-February/025283.html
Why does this stuff entertain me?

sammy
Saturday, July 19, 2003

*  Recent Topics

*  Fog Creek Home