4 ms·
Your use of the words "intuitive" and "revert" in this context betray that your models are driven by how you expect centralized version control to work. While
by lincolnq 17y ago
Your use of the words "intuitive" and "revert" in this context betray that your models are driven by how you expect centralized version control to work.
While Git and Mercurial are nearly isomorphic in implementation, their UIs differ significantly because they're written with different models of DVCS in mind.
Basically, I would argue you haven't fully grokked Git. To the extent that I have understood Git's model, I have found it extremely insightful; if you want this insight, you should spend a little more time trying to understand it before giving up on it.
- alexgartrell 17y agoAs a long-time TA for the class leading up to 15-410 (almost as long as he's been a student at CMU) I can firmly attest to the fact that we have done absolutely nothing to make him aware of centralized version control (or distributed version control...) :) So basically, he's got the freshest possible eyes to make this judgement, and if your counterclaim is that he hasn't truly grokked it yet, then that suggests that it may be counterintuitive. Additional fairness: the project in question is a 6-week round-the-clock code fest. Writing a kernel from scratch takes forever. (Is this project just a waste of time? Having moved on to poking at the Linux kernel and stuff, I'd say almost certainly, but that's a topic for another conversation.) Most Sincerely, Alex "Found out the hard way that reset != revert" Gartrell
- theli0nheart 17y ago> if your counterclaim is that he hasn't truly grokked it yet, then that suggests that it may be counterintuitive. Or proper usage wasn't explained to him correctly.
- jshen 17y ago" if your counterclaim is that he hasn't truly grokked it yet, then that suggests that it may be counterintuitive." You should say, "it may be counterintuitive to him". Intuition is based on past experiences and our internal metaphors. We have no reason to believe that his "intuition" is the same as most of the population that would use git.
- blasdel 17y agogit is the first revision control system I've used where "revert" actually does what I "intuitively" expect it to: begin a new commit that reverts a commit in the history. The rest of the clown-car VCSes use "revert" to go back in time to that commit in the history.
- tghw 17y agoClearly, you don't know your clown-cars. Mercurial uses hg backout to start a new commit that backs out a previous commit, hg rollback to undo the previous transaction (without a separate commit), and hg revert does undoes the uncommitted changes in your working directory, very similar to MS Word's (now defunct) and Photoshop's (still active) File > Revert command. To me, revert means "revert all my changes to the last saved version", which is exactly what Hg does.
- blasdel 17y agoI had another sentence in my post that I edited out that was a caveat to Mercurial: at least it's possible to get the 'git revert' behavior with hg without implementing it yourself from a patch-series dump. To me, revert means "stage a new commit that reverts this commit in the history as if it never existed". When I first used svn, I really expected 'revert' to mean "revert this commit". I also 'intuitively' expected it to have something like git's index, and ended up just working around that by just laboriously creating my own set of patches to feed it in another checkout. Not everyone's mental models line up — we are both free to consider one another as a moron (see also: politics, religion).