33

I use to work with Visual Studio + C#, and have been using svn before, but not currently, so I want to put my code again on source's control.

Recently I heard about git, and I have been reading the git wiki and this and this, and I have read that there are no gui clients for git like TortoiseSvn, or at least, I haven't found'em.

My questions are:

  • What are the advantages of git over svn
  • Where can I find front ends easy to use for git.
  • Is there any plugin (ANKH like) for git working with Visual Studio?
  • Where else can I find resources for start with git?
kamaci
  • 72,915
  • 69
  • 228
  • 366
Jhonny D. Cano -Leftware-
  • 17,663
  • 14
  • 81
  • 103
  • You may find this question interesting: http://stackoverflow.com/questions/26845/do-you-use-distributed-version-control – Bastien Léonard Apr 11 '09 at 13:47
  • See also http://stackoverflow.com/questions/871/why-is-git-better-than-subversion – David Schmitt Apr 11 '09 at 22:00
  • Some time ago I made a comment on the git wiki page you've mentioned. According to http://svnvsgit.com/, it's unfair. IMO, in the current state it does not provide fair comparison in any way. – bahrep Jan 02 '16 at 14:36

9 Answers9

24

Here my personal experiences with git vs. svn:

  • Git vs. SVN: git tracks state, history and integrity of the source tree. SVN only tracks state.

Especially when merging, git's extensive use of stored history (across renames and merges) comes handy to make much better informed decisions leading to less conflicts.

Having a complete, cryptographically verifiable integrity chain through the repository helps build trust in the underlying systems, or detect when they fail. On the downside it can be complicated to create "clean" patches. Having a proper workflow helps.

Finally, git works locally by default, giving it a unbelievably huge boost in contrast to SVN which must go to the central repo for almost any operation.

  • Software: See this question, there are several standalone GUIs for working with the repo, history browsers and shell extensions.

  • Studio Plugin: GitExtensions has a Visual Studio 2005 and 2008 plugin.

  • Documentation: Start with the GIT User's Manual. There are more links to tutorials and books on git-scm.com.

Community
  • 1
  • 1
David Schmitt
  • 58,259
  • 26
  • 121
  • 165
  • 4
    Git is a Distributed VCS; Subversion a Centralized VCS.. But both check state, history and guarantee integrity.. but in different ways. – Bert Huijben Apr 11 '09 at 21:11
  • SVN won't notice accidental or malicious changes to the repo store and SVN tracks "history" as a disconnected series of patches without much of a pedigree. Try merging multiple times between two branch in SVN, it'll create conflicts for all already merged changes. – David Schmitt Apr 11 '09 at 21:58
  • 1
    Ah.. you used a subversion of more than a year old? (Merge tracking is available since 1.5; current is 1.6) I assume your git is outdated as well? And as a user you can look at it as a serie of patches (same applies to git).. Internally subversion doesn't look at it this way. – Bert Huijben Apr 12 '09 at 11:30
  • 2
    Indeed, I've no recent experience with SVN merging. Having read the relevant section from the SVN Book though, I still think subversion is still playing catchup: "once a --reintegrate merge is done from branch to trunk, the branch is no longer usable for further work." Way to go! – David Schmitt Apr 12 '09 at 14:51
  • 1
    David, yeah I've found that I'm generally best off deleting my branch in subversion after reintegrating and then re-creating it. What a pain, discourages merging and branching in the first place. – jpierson Apr 19 '10 at 22:22
  • http://stackoverflow.com/questions/32383/is-there-anything-like-tortoisecvs-and-tortoisesvn-for-git link is broken – Venkat Mar 21 '17 at 12:26
9

There is a relevant question concerning tools for GIT similar to tortoise.

The advantages of GIT over SVN are discussed over and over so it's not something someone should elaborate here

And as for a Visual Studio plugin, i don't think there is, or will be one for quite some time. Maybe i am missing something here though.

Try here for a good guide on how to get started with git in windows

As for my entirely personal taste and view, i continue to stick to svn based on my personal requirements of what i want from my version control and i consider svn to be in a whole other level of tool and community support. Also i consider svn very mature and that doesn't necesserily mean that git doesn't get the job done.

Community
  • 1
  • 1
Kostas Konstantinidis
  • 13,347
  • 10
  • 48
  • 61
  • git seems to be considered relatively new. If it's any consolation, I'm on a Mac and the Xcode development environment doesn't have any support for git either (as it does for svn). – Abizern Apr 11 '09 at 13:19
  • yeah, been using svn for quite a while and it has _never let me down this far. Without wanting to sound a windows fanboi i consider git to be in better terms in Linux than in any other OS environment *duh* – Kostas Konstantinidis Apr 11 '09 at 13:24
  • 7 years passed after your answer was posted. There is still a lot to elaborate on the topic. Starting from the fact, that it seems that the Git wiki page never provided any kind of fair comparison of SVN and Git. That's a pity. – bahrep Jan 02 '16 at 14:38
8

I don't want to hash over pros and cons of git vs svn but here is one simple set of comparisons :- Why Git is better than X.

Some good Git Resources:

  1. Git Ready. A sort of blog with little posts on beginner, intermediate and advanced uses of git.
  2. Git Magic. A nice run through of what you can do.
  3. GitCasts screencasts - nothing like seeing it in action to help you understand it's power. Including the useful Git On Windows screencast.

Have fun!

Abizern
  • 146,289
  • 39
  • 203
  • 257
  • Has that domain been taken over? The current content at http://whygitisbetterthanx.com/ is not anything I would link to or upvote – WiseOldDuck Aug 25 '15 at 02:11
5

TortoiseGit is available - just Google it (I can't remember the URL) And:

  • Being distributed, you don't need to be connected to a server all the time, just work locally and push when you need to.

  • It is very quick and doesn't use much bandwidth

  • And, the classic, if it's good enough for Linus, it's good enough for you :)

Update: Link to TortoiseGit

Andreas Grech
  • 105,982
  • 98
  • 297
  • 360
Lucas Jones
  • 19,767
  • 8
  • 75
  • 88
4

What are the advantages of git over svn

Before deciding whether to use Git or SVN, make sure that you fully understand your requirements and understand what Git and SVN provide and support. Unfortunately, there is a lot of unfair bias on Git and SVN topic, as far as I've recently discovered at http://svnvsgit.com/.

Let me cite one of the answerers here (@Konstantinos):

The advantages of GIT over SVN are discussed over and over so it's not something someone should elaborate here

This question was asked nearly 7 years ago. But the topic is still kinda hot or warm at least. I've recently stumbled upon http://svnvsgit.com page and I was a bit frustrated to find out that indeed the most of Git and SVN comparisons and tests on the internet are based on some strange intel like the one about Mozilla repository being very large in SVN. This is simply not true and most of the points described in http://git.or.cz/gitwiki/GitSvnComparsion are unfair or wrong.

Or here is a quote of @DavidSchmitt (one of the answerers):

Git vs. SVN: git tracks state, history and integrity of the source tree. SVN only tracks state.

SVN and Git both ensure data integrity (SVN does it much better IMO). Both track history and state.

The only real difference between SVN and Git is that Subversion is centralized and Git is decentralized. Subversion supports some concepts, workflows and cases Git can't support by design. At the same time, Git's disconnected nature can be a major benefits for someone.

Choose wisely!

bahrep
  • 29,961
  • 12
  • 103
  • 150
3

I haven't used git, but I used svn and bazaar (which is similar in philosophy to git), so I can answer you in general terms.

The advantage of the so called distributed version control systems (DVCS) is that the repo and the code are together on your machine, and you are not dependent on a remote repo for operations. Every developer has a "branch", his own copy of the repo to which he commits to. You can commit, revert, check previous revisions, without being connected to the net. Officiality of repository is granted by virtue of human agreement, not technical setup. In svn, you only have one repo, which is _the_repo_ you and all the other people commit to. In DVCS, you commit to your own repo, and another developer to his own repo, and each of you can push his modifications to the officially designed repo when he pleases.

Another clear advantage is that operations in a DVCS are fast, blazing fast. svn becomes incredibly slow when you start having a lot of stuff in your repo. This can become annoying very soon.

On the minus side, DVCS are more difficult to use, but you can use a DVCS as a centralized VCS if you want.

Stefano Borini
  • 138,652
  • 96
  • 297
  • 431
2

I'm not sure what the stability of TortoiseGIT is at this stage, and when you're talking about something that integrates that intimately with Explorer this is an important consideration. Can anyone speak to this?

Also bear in mind that git is not the only choice if you are looking for the benefits of a distributed VCS. Git has the twin virtues of being very powerful and also very complicated. You might find another DVCS such as Bazaar or Mercurial an easier transition to reap the benefits of a distributed system. Both have tortoise interfaces in development but again, I'm not sure of their stability. (Bazaar's is included in their windows package though, so you would assume it is at a reasonably good stage.)

A quick search has also turned up VisualHg and Bzr-VisualStudio although I have no idea of their readiness to be used in anger. Caveat emptor.

Jon Adams
  • 24,464
  • 18
  • 82
  • 120
Evan
  • 18,183
  • 8
  • 41
  • 48
  • TortoiseGIT, is, unfortunately, quite unstable. I used it, and, from what I can tell: it mucked up my repository - I had to re-clone from Github, and none of the commands worked. :-( Oh, well. Hopefully it will get more stable as time goes on - it would be a really useful tool. – Lucas Jones Apr 11 '09 at 21:37
  • @person-b, I've been using TortoiseGIT since it was recommended here, but it doesn't seems to me stable either, what other gui do you recommend for git?? – Jhonny D. Cano -Leftware- Apr 13 '09 at 02:07
1

Git appears to now be the industry standard for version control, replacing SVN and CVS etc. Git from a user perspective gives rise to more features and helps to manage code changes better than SVN will. It's also easier to set up repositories thanks to sites such as GitHub and BitBucket rather than needing your own server.

Git is easy to run in the command line (far more helfpul commands than SVN). There's also a range of good GUI programs which help to provide a nice front-end to your Git repo, GitHub Desktop and SourceTree to name a couple.

Chris
  • 46
  • 1
  • 3
0

As others had pointed out git is faster and more stable. It's distributed vs centralized, in svn if you mess the central repo you lose everything. In my experience there are less problems when you merge code with git.

There is only one thing that I don't like. It's that you can't download a part of a repository with git. If you just need one folder, you'll need to download all the repo. You can do this with svn.

hoaphumanoid
  • 977
  • 1
  • 9
  • 25
  • What exactly do you mean by "mess the central repo"? You should treat the central repo as your precious time machine! Moreover, repo corruptions in SVN are very rare and in most cases have hardware-related root cause. Subversion client or user operations never break SVN repository. – bahrep Jan 02 '16 at 16:33
  • I forgot once that I had my central repo in my computer. Then I formatted the computer :-) bye bye repo – hoaphumanoid Jan 02 '16 at 17:08
  • if you had your local Git repo on your computer and formatted the drive, you'd also lost your source code and other work saved there. You are confusing subversion working copy with git repo, I guess. – bahrep Jan 02 '16 at 17:09
  • I lost all the commits. It doesn't happen the same if you use git because git is distributed, every local copy is a complete copy of all the repo. In svn you just download the last version of the code. That's one of the the reasons why you can not download part of the repo in git like you do in svn – hoaphumanoid Jan 02 '16 at 17:15
  • I understand this. Still, you formatted your HDD with a central repo knowing that the repo is the only storage for your code. You could've used a hosting service for your repo or at least deploy in on another machine. IMO, you say that you *formatted HDD with a central repo"* and this is your mistake, not Subversion downside. This should never happen to an experienced developer, company or open-source project. – bahrep Jan 02 '16 at 17:22
  • Yes of course, it was my mistake. It's not svn fault. What I'm pointing out if that if the central repo if messed you lose everything, it's not the same with git because you get a complete copy in every git clone you make – hoaphumanoid Jan 02 '16 at 17:27
  • 1
    OK, but there is disaster recover and backup that should help to avoid such kind of problems. Moreover, with Git development can halt even if one developer loses his SSD. Proof: Linus Torvalds got his SSD broken, http://www.itworld.com/open-source/372837/linus-torvalds-ssd-breaks-halts-linux-kernel-development – bahrep Jan 02 '16 at 17:33