Re: GSoC 2016: applications open, deadline = Fri, 19/2
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Feb 19, 2016, 07:34 UTC
- Message-ID
- <vpqr3g96tn6.fsf@anie.imag.fr>
- In-Reply-To
- <xmqq7fi1hlw6.fsf@gitster.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
> Deciding what the 'safe' subset is must be done with a lot of > thinking by people who intimately know what implications it has to > ban each feature. I do not think it would be a good fit for a > project to give to a relatively new participant to the Git project.
I have to agree with this: this would actually be very hard to get a nice proposal from a student. Students can be good technically, but we can't expect them to be experienced and giving sound advices to beginners is hard in this situation.
> We have these "powerful" tools for a reason. After making a mess > experimenting with your working tree files, "reset --hard" is the > best tool to go back to the known-good state,
I disagree with that. This reminds me a discussion I had with a student a few years ago:
student: how do a clear all changes from my worktree? me: git reset --hard
the next day:
student: OK, now, how do I get my changes back? me: ...!
There's almost no situation where reset --hard is the best tool. If you just want to discard local changes, then "stash" is much safer (it'll eat a bit of your disk space, but in 99% cases it's not an issue). If you messed up a merge then "merge --abort" is safer. If the goal is to move HEAD, then "reset --keep" is safer.
One thing I like about Git is: when a beginner messes up his tree or repo, his Git guru friend can almost always repair it easily (at least, much easier than it was with svn). But there are still a few ways for beginners to shoot themselves in the foot in a way that the guru cannot repair.
Now, another issue with the proposed core.isbeginner is compatibility with scripts. Dangerous commands are often plumbing, and a beginner may still want to use scripts or other porcelain on top of it. Typically, I think this rules out "git reset --hard" which is legitimate in scripts.
-- Matthieu Moy http://www-verimag.imag.fr/~moy/