Need a better SCM tool than CVS - How about Github?

Kapila Narang's picture

My company is planning to move to some better tool than CVS/SVN. Hence I as SCM needs to decide which is the ongoing good tool running for SCM for Java/.Net based environment.

Basic Features apart from good SCM requirements, tool should be easy to use & easily automated for Release management/Nightly builds like using Hudson. Good support on editor on windows using Eclipse or so. Tool should be easily integrated with bugzilla/twiki etc.Like CVSWEB good view onto the repo.

Last but not the least a FREEWARE ;)

Thought of github, started exploring it good if experts give the reviews on the same.

Looking forward for comments.

13 Answers

Kapila Narang's picture

One important thing i would like to add is-
My projects go live very often i.e. patch/bugfixes are very frequent like 2-3 in a week. Those fixes goes as set of files changed instead of full war/tar. So in this circumstance not sure how would the release management happen as it has to be automated as already done in CVS.

Experts pls advice .

Bob Aiello's picture

Git is a distributed version control tool that has good internal integrity controls (often a problem with open source tools). However, it lacks a single sign on option such as support for Active Directory or LDAP. Instead you have to use public private keys pairs (there is a tool for managing them). Git and Subversion are very popular among open source enthusiasts.

How many developers are you supporting and what is the platform? IBM Rational Team Concert Community Edition is free for 10 users or if you are using C#/.net you might have already paid for Microsoft TFS. The most cost effective and powerful solutions are not always open source :-)

I am always tools and process agnostic but like to consider all options.

Bob Aiello
Editor in Chief

Kapila Narang's picture

thanks Bob for your reply.
My team is into java based environment working on windows for development/application. Source Repo and Deployment happens on Linux. I have created a tool to generate automated releases(build,package & deploy) which is UI based back end on Linux. & Nightly builds using hudson. Team size is close to 100-120 odd people.

Changing to a new tool is something big change * hence need to gather all minute feasibility of having positive repercussions. So far i m not using LDAP(use ACL to acess) with CVS. But if LDAP is possible will surely adapt.

No doubt freewares are always gr8 as compared to paid ones but maximum companies try for freeware first as doing currently with CVS in our case. As still management things SCM tool is not of that great help directly.

Bob Aiello's picture

most companies in this space are using Subversion (SVN) or a commercial tool. Some folks find SVN to be less than optimal for complex branching which git apparently does pretty well. But the management of the shared keys may be an issue that has to be addressed with your security folks. Definitely sounds like you should run a bake-off and include Subversion, Git and perhaps Mercurial.

CVS should be deprecated. (use your favorite search engine and search for CVS and corruption :-)

If your company uses SCRUM then consider RTC Community Edition and an instance for each scrum!

Bob

Kapila Narang's picture

ha!! feels like living in old age.So much to discover :)
SCRUM, Mercurial are on my notepads since long.

Substitute for SCRUM is our in-house tool built on ruby on rails. Which is worth scrapping instead of enhancing it.

Now call is either Git or Mercurial is what i guess Bob u suggesting.
** Keeping SVN aside when u new things there,then why try old ;)
By security, yes keys is never a right choice.LDAP is best suited guess both tools have something or the other to fix this, right?

baynes's picture
baynes replied on June 22, 2011 - 4:53pm.

If all your users are on the same filesystem then Git can access using filesystem access (so no issue with keys) and can also share repository contents (efficiency improvements).

Returning to the original post - what is ment by "better"? Or many be what is it you find wrong with Subversion? If you have managed to automate the process with CVS then doing it with Subversion should be easy. Git would be more work.

Subversion is in many cases simpler to use than Git and that can make it "better" in some cases even though it does not have the flexibility and performance of Git. But there are other cases where Git is simpler than Subversion.

I have used both Subversion and Git and they are both good tools but they are different horses for different courses.

If you just want a faster Subversion with some extra features (including easy to set up proxies) then consider Perforce which is free for a few users.

jwschaeff's picture
jwschaeff replied on July 11, 2011 - 5:04pm.

As an SCM practitioner for the last 20+ years I've seen/worked with a number of version control tools, both commercial and open source. My personal preference is Subversion over (in order), CVS, PVCS, Perforce, Clearcase, Harvest, Dimensions. I never tried Mercurial but I've hear a lot of SCM'rs saying good things. You'll notice that Git didn't even make the list.

I've recently joined a company using Git and as an SCM'r have always prided myself on being able to provide a simple, consistent work-model for basic version control work (checkout, commit, tag, etc.). Git is such a different animal that even a 'simple' process is difficult to get to. For the 'social' coders (ie; freeware coders who like to see what somone (anyone) else is doing, GitHub is a great 'lounge'.

From our developers perspective, they hate it. They spend hours figuring out how to do the simplest of version control actions. Literally, one of our developers entered the scrum one day, said he was going to do 'xyz today', the next day he said, 'I'm going to the xyz that I said I'd do yesterday but spent 8 hrs wrestling with GitHub'

From a SCM'rs perspective, I'm less than impressed and Git lengthens my day in a negative way. Be very wary of this tool. Simple, SCM-centric efforts are no longer simple, nor can they be trusted. A case in point:
[ul]* Try to find the branch a tag has been applied to.... outside of using the gitk interface? I'm sure there is a command string that would do this but I haven't found it yet.
* Hook scripts which are central to managing the repository are severely limited in being able to control/monitor commits as not each commit has to enter the repository in the same way. Repositories can be distributed to local filesystems, then commits can be wiped out of the history with a 'rebase' so the history going into the repository is different than the original commit.[/ul]

So, the better, freeware tool you're looking for? Subversion Hands Down!

Also a good barometer of any tool is if it has any history like a forum here on CM Crossroads. You can look at the forum history to see what the pitfalls are and the expertise is available when needed. You'll notice GitHub hasn't made the list here yet either.

Killawat's picture
Killawat replied on October 5, 2011 - 12:37pm.

Git's popular because of its merging support and distributed version control, but for work its not really suitable because its not as secure and with its centralized version control system SVN is better for a corporate environment. Subversion is much easier to use as a team.

jptownsend's picture
jptownsend replied on October 6, 2011 - 10:11am.

Lincoln,

You hit the nail on the head about Git. Thank you for your post. Sometimes free is very costly.

Regards,

Joe

Bob Aiello's picture
Bob Aiello replied on October 6, 2011 - 11:12am.

Katie, you say that Git is not as secure as Subversion. I am puzzled as to why you are saying that. Git uses cryptography (I believe that it is MAC-SHA1) to ensure repository integrity. Git uses shared keys to authenticate users. What is needed is support for active directory, LDAP and other authentication mechanisms. I believe some Git service providers have implemented this.

Subversion was supposed to support a database backend, but we all know that this approach did not work out so people use FSFS, which is a file based approach similar to the use of RCS files in CVS.

So are you saying that Git has better integrity but Subversion has better support for login security? Please be more specific. thanks!

BTW - I use both Git and Subversion together along with a number of awesome commercial solutions. In my view, each approach has its own advantages and challenges.

Bob Aiello

Kapila Narang's picture

Thanks everyone for giving overwhelming response & apologise for not continuing the discussion. Project got repriotized & now I have to make the call of new VCS in next 2 weeks.

Dear experts would request to help me out here. How do experts make this call on technical grounds?

To provide basic info- Code is Java & .Net based(VS12/VS08) as an Ecommerce company with no multisite. No msdn services hence spending $600 to go for TFS is not sounding good option. We plan to have one tool arcross all projects.  Total repos  I have is 200+, max size of a repo 5G(only 2,rest in MB). Java Developers 200+ , .Net Developers 70+, 50+Testers.

We use CVS(Java/PHP/Perl) & SVN(.Net) as central repo on Centos. Developer uses Eclipse as there IDE & have patch releases almost twice a week.

Thirdpaty tools we use - Bugzilla,Sonar,ReviewBoard,Jenkins

Inbuilt scripts (perl/php/Django python) for Build Release & Deploy Management. We plan to built new release tool.

Now, deciding on moving to GitHub $250/user everyyear or Perforce(which has Github  Fusion) cost $600/user one time.

Both has its own advantages & disadvantages. As an SCM I have to be very cautious that my developers are always at easy of work using new tool. Since perforce give that flexibility. Whereas in Github lot of initial training + heavy automation would be required where in perforce we already have everything built in.

Any reviews on Perforce Gitfusion feature?

if any questions let me know.

 

Look foward to hear soon.

 

 

 

Kapila Narang's picture

To add the requirements /environment

1)Frequent branching as parallel development

2)No Multisite,Easy to learn ,Easy to maintain

3)frequent commits & merges(with least manual efforts) , code integartion.

4)Prospects to go Agile/SCRUM env

5)Maximum flexibility to change branches

6)Good integration feature with other thirdparty tools 

7)Good IDE if have to give away Eclipse

8)good performance/speed which lacks greatly in CVS

** Is Github doesnt have good support  for Windows based development to developers? I heard about Eclipse plugin for Git is that not sufficent enough?

 

 

Bob Aiello's picture
Bob Aiello replied on February 21, 2013 - 7:49am.

how many developers? Are they co-located or distributed?
Do you have regulatory requirements? (e.g. SOX, HIPAA)

Subversion and Git are very popular these days. There are pros and cons to each.

 

If you have less than ten developers there are some high end tools that you can use for free including IBM Rational Team Concert (RTC)

Bob Aiello
Editor in Chief

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.