In short, what are the benefits of git and mercury over subversion?

Can someone tell me what is advertising, Git and Mercurial over Subversion?

+7
git version-control dvcs svn mercurial
May 19 '09 at 21:52
source share
9 answers

As for Git, I think there are quite a few of them, the largest of which (in my opinion) is Git's extensive support for branching and merging. Git makes it really, really easy to branch, and its ability to merge into changes is much, much better than SVN's. Tools like gitk also make it really, very easy to visualize the relationships between branches in a Git repository.

There are many other benefits. I think that Git has the best tools and the best toolchain, and the fact that it does not require a central repo and a “proven” repo is good when you are working on small projects yourself. I think merging and forking is the biggest advantage.

(Much of Mercurial is also, although I never liked Mercurial's emphasis on local clones for branching, I prefer the Git method to store all branches in the same repo.)

+6
May 19 '09 at 22:01
source share

Comparison with various version control systems can be found at http://whygitisbetterthanx.com/ . What I like best about git:

  • It's faster.
  • It does not duplicate the source code, like SVN, in the .svn subdirectory.
  • This allows you to commit offline and then click.
+5
May 19 '09 at 9:57 p.m.
source share

Git and Mercurial distributed , SVN is not.

Advantage or not? You decide...

+4
May 19 '09 at 9:57 p.m.
source share

Tell me that you have a personal project, would you put it under version control? (I hope you say yes).

If so, wouldn’t you be something simple? Git does not require a server installation or the like. Your working directory is your repository.

Want to try a new crazy idea? Just branch and experiment with it in this branch. If this succeeds, go back to your main branch and merge. If your idea didn’t work very well, just go back to the main branch and delete this crazy_idea branch.

Want to work on crazy_idea, but also continue to develop the master branch normally? Again, no problem, you can switch between branches and forward, and only merge crazy_idea after it has matured enough.

Even if you are on a team, each developer (or a small group of developers) can work on some idea in an experimental branch before combining it with the rest of the code.

I believe this makes open source even easier. You do not need to grant access permissions to anyone. If someone has performed an excellent function, he may ask you to leave him. If you like what you see, you can combine it.

Here's a surprise: Git is much simpler than svn.

Really. I've always heard of version control, but never did. When I tried to put my code under the local svn server, it was a nightmare; I really hated that.

Now I put everything under git.

+4
May 19 '09 at 10:59 p.m.
source share

It’s not that one side is “better” than the other, it means that GIT, Mercurial and others let you work in ways that are different from Subversion or CVS. Subversion and CVS only offer a centralized repository structure, while others offer "distributed." A distributed approach makes it easier for developers to work together and also affects the management of change groups on your own computer.

Which method is best for you is what you or your organization will need to decide.

+3
May 19, '09 at 21:58
source share

Important thing for me: SVN does not support tags:

  • Tags are not symbolic. These are repo paths (copies of COW).
  • In SVN, a file belongs to a tag (since the tag is a copy of the file). In other systems and in human intuition: the tag belongs to a file. This is the opposite attitude.
  • Therefore, it is difficult to list something like: "all tags have files." This information is simply not stored directly in the SVN repository.
+3
May 19, '09 at 21:59
source share

You have the same range of “differences” between Git and SVN than between Git and CleaCase
(see my post on VCS Fundamentals )

  • SVN: linear is the central VCS where the branch and tag are the same (dot in linear history).
  • Git: DAG ( Directional Acyclic Graph ) distributed by VCS, where each graph path is a branch and each workspace is a complete repository.

Since Git is content-oriented, it will merge much more efficiently than Subversion:

  • very quickly find in your schedule what you need to combine
  • applying the right patch
+2
May 19 '09 at 10:05 p.m.
source share

For me, svn is working fine. For 1 to 10 experience-based developers.

It’s clear where the “real” version is located in the cloud on the redundant host (I hope some place that monitors your data and uptime). It seems that reading about git is that it is more complex, bigger and more capable. Therefore, if you want a "svn centralized" workflow (see the http://whygitisbetterthanx.com/ site) with fewer ways to do something, etc., then use the CBH.

I used CVS until it became obvious where everything was fun. I think in a few years, if I change again, will it be git? But in fact - if you spend time with your version control system on any day except the day you set it up, you are doing something wrong.

+1
May 19 '09 at 10:52 p.m.
source share

They conceptually organize revisions as sets of changes that make it very easy to split / merge your code. Merging a branch in SVN is an excruciatingly painful experience.

+1
May 19 '09 at 11:08
source share



All Articles