Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git vs Mercurial vs SVN [duplicate]

Possible Duplicates:
For home projects, can Mercurial or Git (or other DVCS) provide more advantages over Subversion?
What are the relative strengths and weaknesses of Git, Mercurial, and Bazaar?

What are some of the differences between these source control system? Which one is the best for a small 2 people project?

like image 376
Yaso Avatar asked Jul 06 '10 01:07

Yaso


People also ask

What is Git Mercurial and SVN?

SVN is different from Git and Mercurial, in that it is a single repository that all users have to pull and commit to. Git and Mercurial have a distributed model.

Which is more efficient Git or SVN?

SVN is better than Git for architecture performance, binary files, and usability. And it may be better for access control and auditability, based on your needs.

Is Git or Mercurial better?

Mercurial Is Safer For Less Experienced Users By default, Mercurial doesn't allow you to change history. However, Git allows all involved developers to change the version history. Obviously, this can have disastrous consequences. With basic Mercurial, you can only change your last commit with “hg commit – amend”.


2 Answers

SVN is different from Git and Mercurial, in that it is a single repository that all users have to pull and commit to.

Git and Mercurial have a distributed model. This means that there is a repository on every computer and there is usually an "Official" repository that people will choose to commit their changes to and pull from.

Git and Mercurial are extremely similar. I prefer Mercurial because I found it much easier to use. For a 2 person team I would recommend Mercurial, but that is just my opinion. If you are not familiar with version control then you are still gonna have to spend your time learning to use any of the options, but Mercurial seemed the easiest for me.

To start a Mercurial repository all you have to do is open a shell and cd to the directory you want to have version control in, and type hg init. That creates the repository. To add everything in the folder to the repository, type hg add .. Here are some other various commands:

  • To commit the local changes: hg commit -m "Descriptions of changes"
  • To pull to the latest version from the server: hg pull
  • To push the local changes: hg push
like image 159
Conceited Code Avatar answered Sep 18 '22 07:09

Conceited Code


To start with, there's the language they're written in. My experiences with Git and Mercurial have been very similar, but I know that if I want to tweak Mercurial, I can do it, because it's written in Python. Git is at least somewhat in C, which I'm not as familiar with.

Git and Mercurial are what's called distributed. Every copy is created equal, and they can push and pull (using that terminology) changes from each other on an ad-hoc basis. Subversion, on the other hand, consists of a single central repository, and each working copy is a slave to that central server, pushing and pulling (committing and updating, in this case) changes from it and it alone.

Installing Git or Mercurial for a couple of people consists of getting SSH access to the same server and installing a couple of packages. Whereas for SVN, as far as I know you need to configure and run an actual server application under Apache, and then mess with an SSL cert and .htaccess, etc. to secure it.

For all my personal projects, I go with Mercurial or Git. If I were working with a large team, I'd probably go Subversion because you get centralized authentication and hosting. But for two people, I'd pick one of the distributed ones, because then you don't have to mess with centralized authentication and hosting. :-)

like image 34
jacobbaer Avatar answered Sep 20 '22 07:09

jacobbaer