<div dir="ltr">In the case that this is only a 20 minute lecture, I wholeheartedly agree. I do think that git should be mentioned, in a one-liner, as &quot;a more advanced tool that also allows you to work offline&quot;.<br>

<br>So, while I agree that git is too complicated to learn in 20 minutes (takes 1-2 hours from my experience), it has a different upside when compared to subversion: Administration is far easier. This is true for any DVCVS, and stems from the fact that nobody needs write-access to anything but his own files. Users will want to use whatever VCS is taught in order to collaborate, and this requires some support work from the admins, which should be taken into account. Either that or an alternative free, easy-to-setup, fast and technion-accessible solution should be shown.<br>

<br><div class="gmail_quote">On Sun, Oct 18, 2009 at 8:37 AM, Shachar Shemesh <span dir="ltr">&lt;<a href="mailto:shachar@shemesh.biz">shachar@shemesh.biz</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


<div dir="ltr" bgcolor="#ffffff" text="#000000"><div class="im">
Ohad Lutzky wrote:
<blockquote type="cite">
  <div dir="ltr">Of course it would. But this one puts a lot of candy
down that same path as well. These mines hurt, but are not fatal
(again, from my experience, all mistakes can be recovered if detected
within a reasonable time), and git&#39;s features make it, IMO, worth the
trouble. For example, while many people find the staging area confusing
(you have to &quot;add&quot; a file you&#39;ve changed again in order to commit it,
or just use commit -a to automatically add all changed files), it
allows git to do awesome stuff like &quot;git add -p&quot;; this command goes
over the differences from the previous version (like git diff), and
asks you which hunks to stage. This means you can make a set of
changes, realize it can be logically split into two, smaller sets of
changes, and proceed to commit it as two sets of changes. Or, for a
more common case, it allows you to stage only your actual fix to the
commit without the various debugging statements you&#39;ve added across
your code in order to track down a bug, and do a quick &quot;git reset
--hard&quot; afterwards.
  <div>There&#39;s a succinct list of reasons I like git here: <a href="http://whygitisbetterthanx.com/" target="_blank">http://whygitisbetterthanx.com/</a><br>
I&#39;m getting the sense that this conversation has gone off the main
track a little. This is, I&#39;ll admit, also my fault. The question here
is not &quot;which VCS is better&quot; (for which my answer, if you look at it,
is &quot;depends&quot;), but &quot;which VCS should we teach in the dev lecture of the
W2L series&quot;.<br>
Here&#39;s the thing. When you first start to use a new system, what you
see is mostly the mines. If this is the first system of its kind, you
are likely to run into mines that are not really mines, but your
misunderstanding of what the system is supposed to do, but still, the
mines (real and conceptual) are mostly what you see. You do not,
typically, see the candies, for the very simple reason that you do not
understand the system well enough to appreciate or make use of them.<br>
As you use of the system matures, you learn to change your thinking to
not regard some things as mines, and avoid the real ones. As that
happens, the mines become less and less important, and the candies
become more and more interesting. The main pre-requisite for that
happening is that YOU HAVE NOT GIVEN UP ON THE TOOL!<br>
This thread started around a very specific question - should Haifux
teach git, or some other version control system, as part of the
development tools lecture. Any answer should take into account that
amount of time given for this part of the lecture (between 10 and 20
minutes), and the amount of tutoring the students will have down the
road (none unless they seek it). Under those conditions, in my opinion,
git is the wrong tool because:<br>
  <li>Anyone who has any experience with VCS will, likely, have used
server based ones. Git, for them, contains all of the misconception
mines that go with a distributed revision control</li>
  <li>Git has some actual bone-fide mines, lain on the path traversed
even by relatively basic VCS operations.</li>
  <li>None of the candies matter, as you only have 20 minutes (best
case) to show them the tool and set them on their way, and the candies
require the user to &quot;get&quot; version control in order to be appreciated.</li>
With the amount of time you have, you will be lucky to get 20% to
appreciate the fact they can restore any version they checked in in the
past. Showing them git because it can split a single change into
multiple commits will fly so far over their heads, I&#39;m afraid none of
them will even run a single git command to even check out the water.<div class="im"><br>
<pre cols="72">-- 
Shachar Shemesh
Lingnu Open Source Consulting Ltd.
<a href="http://www.lingnu.com" target="_blank">http://www.lingnu.com</a>

</blockquote></div><br><br clear="all"><br>-- <br>Man is the only animal that laughs and weeps, for he is the only animal that is struck with the difference between what things are and what they ought to be.<br> - William Hazlitt<br>

<br>Ohad Lutzky<br>