I regularly teach Git to students at the senior level that are building RoR applications. Even though we only cover the basics, they seem to struggle quite a bit with both the concepts and the mechanics. They are on Windows for the most part, and are required to push their code to Bitbucket. The seniors have suggested that I introduce the topic much earlier in the curriculum in a sophomore level Java class. The students in that class have had one prior programming class, but generally are still struggling with the basics. I've been thinking about using Mercurial at the sophomore level instead of Git to see if that eases the introduction to the concepts. Any thoughts one way or the other?
I guess that they are simply not accustomed to work in command line, given
that Windows gives terrible terminal and shell. I would rather expose them to
Linux (or maybe BSD), possibly through providing them shell accounts on some
server and requiring code to be built primarly there. Then it should not be
too difficult to jump from working with files in command line to working with
version control in the same command line.
Last time I checked mercurial has better windows-support and tooling. And since the concepts generally is the same they should have no issue learning git later on if the need it.<p><a href="http://tortoisehg.bitbucket.org/" rel="nofollow">http://tortoisehg.bitbucket.org/</a>
On whether to use Git or Mercurial, my gut suggests you teach Git, but if you have the ability, poll alumns of the program and/or companies who are nabbing grads to see what they have/haven't used. Personally, I've never been around an environment that uses Mercurial, but that's just my particular situation.<p>Also, the basics of version control should be taught in the very first programming class. You can then expand on the basics in further courses.