{"thread":{"id":"35355","subject":"Command-line git Vs IDE+plugin?","startedAt":"2013-11-18T17:11:54Z","lastAt":"2013-12-04T11:10:39Z","messageCount":12,"participants":["Matthieu Moy","Philippe Vaucher","Andreas Krey","Konstantin Khomoutov","Thomas Koch","Noufal Ibrahim KV","Junio C Hamano","Keshav Kini","Gauthier Östervall","Chris Packham"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"230760","messageId":"vpqiovpfxd1.fsf@anie.imag.fr","threadId":"35355","inReplyTo":null,"subject":"Command-line git Vs IDE+plugin?","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2013-11-18T17:11:54Z","receivedAt":"2013-11-18T17:11:54Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Hi,\n\nI'm normally an Emacs+command-line user, but I also use Eclipse or\nNetbeans on some projects. I tried using EGit and the Netbeans plugin\nfor Git, but found the GUI both more comlex and less powerful than the\ncommand-line. I end-up using command-line git in a terminal, outside the\nIDE (and do a refresh in the IDE after commands that modify the\nworktree). Obviously, being a long-time command-line user, I'm rather\nheavily biaised ;-).\n\nI was wondering whether others had similar (or not) experience. In\nparticular, as a teacher, I'm wondering whether I should push my\nstudents towards the GUI in the IDE, or advise them to keep using the\ncommand-line (we teach them git with the command-line first anyway, but\nafter a year of practice, we may want to show them the GUI equivalent).\n\nThanks,\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"230761","messageId":"CAGK7Mr7EpkE3mL2p9idNr7HdnBNxqiQ8qWs+QuyhR9DvW=Pd1A@mail.gmail.com","threadId":"35355","inReplyTo":"vpqiovpfxd1.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Philippe Vaucher","fromEmail":"philippe.vaucher@gmail.com","sentAt":"2013-11-18T17:42:26Z","receivedAt":"2013-11-18T17:42:26Z","isPatch":false,"sender":{"key":"philippe.vaucher@gmail.com","avatar":null},"body":"> I'm normally an Emacs+command-line user, but I also use Eclipse or\n> Netbeans on some projects.\n\nDid you give magit a try? It's really an awesome emacs plugin, which\ngives me pretty much the same control as the command line experience\nwithout the pain. Ask me more about if if you're interested.\n\n\n> I was wondering whether others had similar (or not) experience. In\n> particular, as a teacher, I'm wondering whether I should push my\n> students towards the GUI in the IDE, or advise them to keep using the\n> command-line (we teach them git with the command-line first anyway, but\n> after a year of practice, we may want to show them the GUI equivalent).\n\nIn my experience, most people prefer the GUI version, simply because\nto them it's more intuitive and stuffs like visual diffs tools are\nintegrated, which makes them quickly realise the benefits. That said,\nbecause it's \"easier\" they tend to not dig deeper and are lost at the\nfirst little problem, e.g a simple conflict becomes difficult to\nsolve.\n\nIn my opinion to *learn* git it's useful to learn with the console\nfirst, just like when you learn C++ it's useful to start with simple\nexercises and not jump straight to GUI programming. When they become\nfamiliar with the basics, I think it's nice to show them about  `git\nlog --graph --all --decorate` and the gitk/gitg equivalent, or \"git\ndiff\" and the vimdiff/ediff/visual merge/kdiff equivalent.\n\nWhen they understand git reasonably (or if they are not lazy people\nand willing to learn), then show them full integrations like\nTortoiseGit (or probably the Netbeans plugin), which are nice when\neverything works but you have to know console git to fix things or\nsimply to be aware of their limitations.\n\nTL;DR, I think both are necessary, the command line to understand git\nand the integrations/wrappers to add sugar to your daily workflow.\nVisual tools are great, especially visual diffs for merging.\n\nPhilippe\n"},{"id":"230762","messageId":"20131118174739.GA27105@inner.h.apk.li","threadId":"35355","inReplyTo":"vpqiovpfxd1.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Andreas Krey","fromEmail":"a.krey@gmx.de","sentAt":"2013-11-18T17:47:39Z","receivedAt":"2013-11-18T17:47:39Z","isPatch":false,"sender":{"key":"a.krey@gmx.de","avatar":"https://avatars.githubusercontent.com/u/37810?v=4"},"body":"On Mon, 18 Nov 2013 18:11:54 +0000, Matthieu Moy wrote:\n...\n> I was wondering whether others had similar (or not) experience.\n\nSimilar. When I used eclipse I didn't even try to use the plugins\nand just stayed on the command line. (Well, almost, but back then\njgit couldn't deal with submodules which I needed.)\n\nI have the same experience with the few git GUIs I tried - none\nstuck to me. Even 'git gut' hardly made the cut, I stay with\nthe command line except for gitk which is very useful to see\nwhat you've done.\n\nFor people that live in the IDE anyway the mileage will vary,\nbut for me there is always some extra mismatch to overcode -\nI know what the CLI is doing and think in terms of these\noperations, and I'd need to understand what the GUI is thinkig\nto be good for me (i.e. how operations are implemented there);\nfor me it always fells like a mist over the repo.\n\nAnd I know that I'm missing on some features - the integration of history\nexamination into codebrowsing schoould be a good thing.\n\nStill, if you show them eclipse, I'd also show them the git integration\nin there. I dread the moment I have to show someone how to merge a pull\n(or any merge) in eclipse though. :-(\n\nAndreas\n\n-- \n\"Totally trivial. Famous last words.\"\nFrom: Linus Torvalds <torvalds@*.org>\nDate: Fri, 22 Jan 2010 07:29:21 -0800\n"},{"id":"230774","messageId":"vpqbo1hfszi.fsf@anie.imag.fr","threadId":"35355","inReplyTo":"CAGK7Mr7EpkE3mL2p9idNr7HdnBNxqiQ8qWs+QuyhR9DvW=Pd1A@mail.gmail.com","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2013-11-18T18:46:25Z","receivedAt":"2013-11-18T18:46:25Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Philippe Vaucher <philippe.vaucher@gmail.com> writes:\n\n>> I'm normally an Emacs+command-line user, but I also use Eclipse or\n>> Netbeans on some projects.\n>\n> Did you give magit a try?\n\nI've used the Git backend for DVC in the past. I gave Magit a try very\nlong ago, and found DVC superior at that time (I was the main author, so\nI was once again heavily biaised). But I got used to the command-line\nmore and more (within an ansi-term window inside Emacs most of the\ntime), and ended up abandonning DVC (both as a user and contributor).\n\nMaybe I'll give it another try.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"230789","messageId":"20131119135309.520f57eb14b3a6e771ed24f9@domain007.com","threadId":"35355","inReplyTo":"CAGK7Mr7EpkE3mL2p9idNr7HdnBNxqiQ8qWs+QuyhR9DvW=Pd1A@mail.gmail.com","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Konstantin Khomoutov","fromEmail":"flatworm@users.sourceforge.net","sentAt":"2013-11-19T09:53:09Z","receivedAt":"2013-11-19T09:53:09Z","isPatch":false,"sender":{"key":"flatworm@users.sourceforge.net","avatar":null},"body":"On Mon, 18 Nov 2013 18:42:26 +0100\nPhilippe Vaucher <philippe.vaucher@gmail.com> wrote:\n\n[...]\n> When they understand git reasonably (or if they are not lazy people\n> and willing to learn), then show them full integrations like\n> TortoiseGit (or probably the Netbeans plugin), which are nice when\n> everything works but you have to know console git to fix things or\n> simply to be aware of their limitations.\n\nWhen it comes to Git on Windows with a GUI front-end, I would recommend\nto take a look at Git Extensions [1] as well.\n\n1. http://code.google.com/p/gitextensions/\n"},{"id":"230790","messageId":"201311191336.31000.thomas@koch.ro","threadId":"35355","inReplyTo":"vpqiovpfxd1.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Thomas Koch","fromEmail":"thomas@koch.ro","sentAt":"2013-11-19T12:36:30Z","receivedAt":"2013-11-19T12:36:30Z","isPatch":false,"sender":{"key":"thomas@koch.ro","avatar":null},"body":"On Monday, November 18, 2013 06:11:54 PM Matthieu Moy wrote:\n> Hi,\n> \n> I'm normally an Emacs+command-line user, but I also use Eclipse or\n> Netbeans on some projects. I tried using EGit and the Netbeans plugin\n> for Git, but found the GUI both more comlex and less powerful than the\n> command-line. I end-up using command-line git in a terminal, outside the\n> IDE (and do a refresh in the IDE after commands that modify the\n> worktree). Obviously, being a long-time command-line user, I'm rather\n> heavily biaised ;-).\n> \n> I was wondering whether others had similar (or not) experience. In\n> particular, as a teacher, I'm wondering whether I should push my\n> students towards the GUI in the IDE, or advise them to keep using the\n> command-line (we teach them git with the command-line first anyway, but\n> after a year of practice, we may want to show them the GUI equivalent).\n\nI'm a software engineer now with an education as a high school teacher. From a \ntheoretical point of view it's preferable to avoid any abstraction done by a \nGUI and use commandline Git. Only gitk is useful to have a visual _feedback_ \nof the actions done on the commandline.\n\nBut also from experience I can tell that without exception everybody whom I \nteached Git understood it only after being introduced to the basic concepts of \nGit and how to inspect and operate them on the commandline. Others told me \nfrom similar experiences.\n\nThose concepts are:\n\n- hashes\n- content adressable storage\n- blops being referenced by trees being referenced by commits\n\nMy collegues meanwhile dumped their graphical Git tool because they learned \nthat they have better control over Git when using it from the commandline.\n\nRegards, Thomas Koch\n"},{"id":"230791","messageId":"8761roo90r.fsf@sanitarium.localdomain","threadId":"35355","inReplyTo":"vpqiovpfxd1.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Noufal Ibrahim KV","fromEmail":"noufal@nibrahim.net.in","sentAt":"2013-11-19T12:45:08Z","receivedAt":"2013-11-19T12:45:08Z","isPatch":false,"sender":{"key":"noufal@nibrahim.net.in","avatar":null},"body":"Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:\n\n\n[...]\n\n> I was wondering whether others had similar (or not) experience. In\n> particular, as a teacher, I'm wondering whether I should push my\n> students towards the GUI in the IDE, or advise them to keep using the\n> command-line (we teach them git with the command-line first anyway,\n> but after a year of practice, we may want to show them the GUI\n> equivalent).\n\n[...]\n\nI teach git professionally and I do so using only the command line\ninterface. This allows me to explain the underlying structures and how\ndata is organised so that commands don't look like magic spells that\nsolve problems. It helps people build a mental model of how the software\nworks so that they can solve most problems themselves or atleast ask the\nright questions. I actively discourage people from using IDE plugins and\ngraphical front ends for the training because they hide the details\nwhich I think are important.\n\nI use gitk and some home brew scripts to show how the DAG and objects\nget created and their structures but that is purely for illustrative\npurposes.\n\nI also mention a few git front ends in passing like magit (which I use)\nand tortoise (since many of the trainings I conduct are for Windows\nusers) at the end of the course so that people are aware of\nalternatives. \n\n\n-- \nCordially,\nNoufal\nhttp://nibrahim.net.in\n"},{"id":"230793","messageId":"xmqqbo1g9vua.fsf@gitster.dls.corp.google.com","threadId":"35355","inReplyTo":"201311191336.31000.thomas@koch.ro","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-11-19T16:53:33Z","receivedAt":"2013-11-19T16:53:33Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thomas Koch <thomas@koch.ro> writes:\n\n> I'm a software engineer now with an education as a high school teacher. From a \n> theoretical point of view it's preferable to avoid any abstraction done by a \n> GUI and use commandline Git. Only gitk is useful to have a visual _feedback_ \n> of the actions done on the commandline.\n>\n> But also from experience I can tell that without exception everybody whom I \n> teached Git understood it only after being introduced to the basic concepts of \n> Git and how to inspect and operate them on the commandline. Others told me \n> from similar experiences.\n> ...\n> My collegues meanwhile dumped their graphical Git tool because they learned \n> that they have better control over Git when using it from the commandline.\n\nInteresting.  I think any UI needs to fill three objectives:\n\n - make common tasks easy;\n - make complex tasks possible; and\n - help users build the right mental model.\n\nAs a tool from Linus school, we started from the second and the\nthird point.  Our UI (i.e. CLI) has long been notorious for lacking\nin the first department, and we have worked long and hard to improve\non that front.  While there are more work needed for CLI, your\nobservation, and a similar experience by Noufal in the thread, hints\nme that the available GUI tools have concentrated primarily on the\nfirst point but are still lacking in the rest.\n\nPerhaps I am being naïve, but I would expect that a GUI is a much\nbetter vehicle to help users build the right mental model.  Unlike\nCLI, it has a canvas to draw pretty pictures and present the users\nwhat the user is really doing after all.\n\nAnd I am sure GUI people will eventually realize that potential in\nthe tools they are building, and the world will become a better place\nfor both GUI and CLI users ;-).  I found \"ungit\" an interesting\nexperiment that goes into that direction.\n\nBeing forever hopeful...\n"},{"id":"230794","messageId":"871u2cpc0h.fsf@gmail.com","threadId":"35355","inReplyTo":"201311191336.31000.thomas@koch.ro","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Keshav Kini","fromEmail":"keshav.kini@gmail.com","sentAt":"2013-11-19T16:55:10Z","receivedAt":"2013-11-19T16:55:10Z","isPatch":false,"sender":{"key":"keshav.kini@gmail.com","avatar":"https://avatars.githubusercontent.com/u/691290?v=4"},"body":"Thomas Koch <thomas@koch.ro> writes:\n> But also from experience I can tell that without exception everybody whom I \n> teached Git understood it only after being introduced to the basic concepts of \n> Git and how to inspect and operate them on the commandline. Others told me \n> from similar experiences.\n>\n> Those concepts are:\n>\n> - hashes\n> - content adressable storage\n> - blops being referenced by trees being referenced by commits\n\nA great reference I always point people to for exactly those reasons is\nSitaram Chamarty's \"git concepts simplified\":\n\n    http://gitolite.com/gcs/\n\n-Keshav\n"},{"id":"230796","messageId":"vpq1u2c9ukx.fsf@anie.imag.fr","threadId":"35355","inReplyTo":"xmqqbo1g9vua.fsf@gitster.dls.corp.google.com","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2013-11-19T17:20:46Z","receivedAt":"2013-11-19T17:20:46Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Perhaps I am being naïve, but I would expect that a GUI is a much\n> better vehicle to help users build the right mental model.\n\nOne thing the command-line does well is to give names to concepts\n(basically, command names, option names, ...). It's easy to write in a\ntutorial or an email \"run the command 'git foo'\". It's less easy to\nwrite \"click on that red button, on the right of the green one\".\nThen, it's clear to everyone what \"commit\", \"rebase\", \"amend\" & so mean,\nregardless of the colors of buttons (that's one of the reasons I use the\nenglish words even when I speak french).\n\nThat said, even when I teach the command-line, gitk is a very valuable\ntool to explain what the DAG is and how branching works.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"231498","messageId":"CAM8gEgi1+4EYXAMzHxWbh0qZiFWGSU52fLKSeiPS-O3Uk5ifgw@mail.gmail.com","threadId":"35355","inReplyTo":"vpq1u2c9ukx.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Gauthier Östervall","fromEmail":"gauthier@ostervall.se","sentAt":"2013-12-04T09:56:51Z","receivedAt":"2013-12-04T09:56:51Z","isPatch":false,"sender":{"key":"gauthier@ostervall.se","avatar":"https://avatars.githubusercontent.com/u/178409?v=4"},"body":"On Tue, Nov 19, 2013 at 6:20 PM, Matthieu Moy\n<Matthieu.Moy@grenoble-inp.fr> wrote:\n> One thing the command-line does well is to give names to concepts\n> (basically, command names, option names, ...). It's easy to write in a\n> tutorial or an email \"run the command 'git foo'\". It's less easy to\n> write \"click on that red button, on the right of the green one\".\n\nAnd it is also easier for many to press a button than writing a\ncommand. This is a bad thing, in my experience. In a GUI, people tend\nto take chances: \"Oh, reset, that sounds like what I want. What, it\ndid not work? Oh there is this option 'hard', let's tick it and see\nwhat happens.\"\n\nAnother thing GUIs do not (often) offer is history. I would be lost if\nI couldn't see what I was trying to do 5 commands ago (before someone\ninterrupted me), or refer to a previous error message.\n\nBut if you cannot touch-type, buttons are going to be more attractive.\n"},{"id":"231501","messageId":"529F0DAF.7060800@gmail.com","threadId":"35355","inReplyTo":"vpqiovpfxd1.fsf@anie.imag.fr","subject":"Re: Command-line git Vs IDE+plugin?","fromName":"Chris Packham","fromEmail":"judge.packham@gmail.com","sentAt":"2013-12-04T11:10:39Z","receivedAt":"2013-12-04T11:10:39Z","isPatch":false,"sender":{"key":"judge.packham@gmail.com","avatar":"https://avatars.githubusercontent.com/u/155667?v=4"},"body":"On 19/11/13 06:11, Matthieu Moy wrote:\n> I was wondering whether others had similar (or not) experience. In\n> particular, as a teacher, I'm wondering whether I should push my\n> students towards the GUI in the IDE, or advise them to keep using the\n> command-line (we teach them git with the command-line first anyway, but\n> after a year of practice, we may want to show them the GUI equivalent).\n> \n\nMy $0.02 as someone who performs some part-time SCM admin tasks for a\nmoderately sized group of engineers (~40) with varying degrees of\nexperience.\n\nSome people are scared by a command line and think poking buttons in an\nIDE is preferable (and somehow safer). As others have pointed out the\nfirst sign of trouble they shuffle over to my desk. I see the people\nthat are comfortable with the command line far less frequently.\n\nI think learning the command line first does help with peoples overall\nunderstanding. Once they have some working knowledge of the basics\nintroducing some of the tools that integrate with those building blocks\nis much easier.\n\nIn some respects the gui/IDE is better for some tasks. For example I\ndon't even bother telling people about 'git add -p' because 'git gui'\nprovides the same functionality with an interface that is better suited\nto picking chunks/lines of code to stage. Another example is Eclipse's\n\"annotations\" which provides the same information as 'git blame' but it\nis right there with the code I'm editing.\n\nSpecifically about Eclipse; I've personally found that in the days of\nGanymede/Helios the VCS integration built around SVN and the mapping of\nSVN concepts to Git was imperfect (impossible?). With Juno/Indigo the\nsupport for DVCSes in general and for Git specifically is greatly\nimproved but I still rarely use Eclipse to actually make commits.\n\n- C\n"}]}