From: "Stephen J. Turnbull" <stephen@xemacs.org>
To: Alan Mackenzie <acm@muc.de>
Cc: Emacs developers <emacs-devel@gnu.org>
Subject: Re: On the popularity of git
Date: Sun, 1 Nov 2015 04:24:40 +0900 [thread overview]
Message-ID: <22069.5496.845592.116424@turnbull.sk.tsukuba.ac.jp> (raw)
In-Reply-To: <20151031165007.GA20747@acm.fritz.box>
Alan Mackenzie writes:
> No, I don't want to become a VCS expert (or, as you put it, "study" my
> VCS). I studied hg, and it fell into place, mentally, without trouble.
Weird. I studied all three (in order to help write PEP 374), and they
just aren't different for any of the Python-Dev workflows that we
compared. At the time it took 0.1 revolutions of Halley's Comet to
checkout Python with bzr; obviously that was out. The people who just
hated git but couldn't explain why, plus the dogfooding principle (hg
is written in Python), carried the day.
> I just want to be a user, as one can quite easily be a user of hg
> or bzr. Being a user of git involves learning its internal
> structures.
No, it doesn't. The workflows for git looked just like the workflows
for hg and bzr, *unless you want to modify a DAG at internal nodes*
(but there were no such tasks on the list for PEP 374). Then the
workflows are very different (basically nonexistent in hg and bzr at
that time).
In any case, you already know the internal structure of git because
it's the same as a Lisp list (with a slight variation to account for
merges). The commands for working with it have different names
(commit for cons, reset for setq), that's all.
> (Note the people recently emphasising the internal representation
> of a git branch to me, talking about pointers to its tip, and so
> on.
Yeah, and a year ago I would have been posting the same stuff. I know
now that that's like "messing around with Jim"[1], because:
> I really don't want to have to know about such stuff.)
> It is evident that when the UI for git was "designed" nobody of any
> experience (or taste) in UIs was involved in the process. Nobody
> knew when to say "stop!". So there are _lots_ of commands, and the
> ones used most often have 20, 30, 50 options
Sounds just like Emacs, except that git is a whole lot more popular.
> to learn about,
Huh? If you don't want to learn about them, don't. Ask a friend who
uses git how to do it. You do have git-using friends (probably about
100,000 of them -- all them cc-mode users!)
> some of which do several distinctly different things (e.g. git
> checkout).
OK, you got me there. You have a choice: learn all the variations on
checkout, or learn some internals so you can use reset. Not attractive.
> If the git team had paid as much attention to UI as they did to
> elegant internal structures, they would have had a world beater of
> a program.
Er, where have you been for the last 5 years? They *do* have a world
beater of a program. Compare user population with, uh, Emacs.
> Not at all. There are 20, 30, or 50 options which all consciously have
> to be omitted.
Which 6 letters in the word "option" didn't you read as you typed it?
Come on, Alan, you've gone past petulant with that one.
I really don't get this; in my workflow I almost never use options in
git, except for -<digits> for log, -m and occasionally -a when
committing, --hard for reset, -l and -f for tag and branch, and -b for
checkout, all of which have important semantics and are pretty easy to
understand IMO. What other git options do you need for your workflows?
> > [2] It occurs to me that one of the things I hated about both bzr and
> > hg was that a bare "$VCS commit" commits everything.
>
> But in both of them, the commit message template informed you which
> files were being committed, giving you the opportunity to abort.
I never see that template: I use "-m" (command line) or "-F ,msg" (in
XEmacs).
> > That is *almost never* TRT for my workflow. But I suspect that Alan
> > loves that feature, since he has a religious objection to commiting a
> > workspace that hasn't been polished to an optically perfect surface.
>
> What, you mean as opposed to committing any old rubbish at the drop of a
> hat?
Yes. Heck, I had this:
(defun sjt/git-auto-commit ()
(let ((file (file-name-nondirectory (buffer-file-name))))
(shell-command (format "git commit -m \"Auto-commit %s.\" %s"
file file))))
on after-save-hook for a while. I admit it stopped being amusing
pretty quickly (rebase -i didn't exist back then). Instead, I just
taught myself to commit frequently enough that if I get confused about
what I'm doing I can usually reconstruct thought processes by looking
at the diffs.
BTW, although I don't care if those "interim" commits become public,
if I did care it's easy enough to "squash" the interim branch into a
single commit on trunk, and optionally delete that interim branch.
> The vagueness and uncertainty introduced by git's two stage
> committing,
I don't understand. If you don't have any added or removed files for
your "polished" commit, you just do "git commit --all". If you do,
you do "git add --all; git commit". This isn't much different from
what you have to do with bzr or hg, except that you wouldn't need
--all on commit for the first version. It's a bit more typing than
for hg or bzr which default to committing everything modified, but
that's always an issue when users disagree about defaults: the
minority loses.
Footnotes:
[1] https://www.youtube.com/watch?v=-4qUXcXuMSE
next prev parent reply other threads:[~2015-10-31 19:24 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-28 19:20 Git question: when using branches, how does git treat working files when changing branches? Alan Mackenzie
2015-10-28 19:44 ` David Kastrup
2015-10-28 20:00 ` Steinar Bang
2015-10-28 20:04 ` Ricardo Wurmus
2015-10-28 20:10 ` Alex Bennée
2015-10-28 22:32 ` Alan Mackenzie
2015-10-28 22:56 ` Xue Fuqiao
2015-10-28 22:59 ` Óscar Fuentes
2015-10-28 23:53 ` Alan Mackenzie
2015-10-29 0:17 ` Dmitry Gutov
2015-10-29 0:28 ` Michael Heerdegen
2015-10-29 0:49 ` Michael Heerdegen
2015-10-29 2:25 ` Yuri Khan
2015-10-29 8:21 ` David Kastrup
2015-10-29 12:35 ` Alan Mackenzie
2015-10-29 13:21 ` David Kastrup
2015-10-29 17:02 ` On the popularity of git [Was: Git question: when using branches, how does git treat working files when changing branches?] Alan Mackenzie
2015-10-29 17:22 ` David Kastrup
2015-10-29 18:08 ` John Wiegley
2015-10-30 7:48 ` Paul Eggert
2015-10-30 9:27 ` Alan Mackenzie
2015-10-30 9:48 ` David Kastrup
2015-10-30 10:34 ` Eli Zaretskii
2015-10-30 21:44 ` Paul Eggert
2015-10-30 9:09 ` joakim
2015-10-30 10:49 ` Yuri Khan
2015-10-31 3:16 ` Stephen J. Turnbull
2015-10-31 8:24 ` Eli Zaretskii
2015-10-31 8:32 ` Andreas Schwab
2015-10-31 11:35 ` Oleh Krehel
2015-10-31 12:19 ` David Kastrup
2015-11-02 22:01 ` Nikolaus Rath
2015-11-03 8:42 ` David Kastrup
2015-11-03 17:38 ` Nikolaus Rath
2015-10-31 16:02 ` On the popularity of git Stephen J. Turnbull
2015-11-01 8:08 ` Uwe Brauer
2015-10-31 16:50 ` Alan Mackenzie
2015-10-31 16:58 ` Dmitry Gutov
2015-11-02 22:05 ` Nikolaus Rath
2015-11-03 8:39 ` David Kastrup
2015-10-31 19:24 ` Stephen J. Turnbull [this message]
2015-10-31 20:13 ` David Kastrup
2015-10-31 21:08 ` Steinar Bang
2015-10-31 21:15 ` David Kastrup
2015-10-31 21:48 ` Alan Mackenzie
2015-11-01 8:17 ` Steinar Bang
2015-11-01 8:54 ` David Kastrup
2015-11-01 10:17 ` Steinar Bang
2015-11-01 11:15 ` Juanma Barranquero
2015-11-02 20:11 ` John Wiegley
2015-11-03 7:00 ` Oleh Krehel
2015-11-03 10:07 ` Dmitry Gutov
2015-11-03 11:58 ` Juanma Barranquero
2015-11-03 13:08 ` John Wiegley
2015-11-03 13:30 ` Juanma Barranquero
2015-11-03 13:38 ` Dmitry Gutov
2015-11-03 13:43 ` Juanma Barranquero
2015-11-03 13:49 ` Dmitry Gutov
2015-11-03 13:58 ` Juanma Barranquero
2015-11-03 14:14 ` Alan Mackenzie
2015-11-03 14:25 ` Juanma Barranquero
2015-11-03 13:43 ` Oleh Krehel
2015-11-03 14:35 ` Óscar Fuentes
2015-11-03 14:52 ` Juanma Barranquero
2015-11-03 15:58 ` Eli Zaretskii
2015-11-03 16:04 ` Dmitry Gutov
2015-11-03 18:14 ` Óscar Fuentes
2015-11-03 19:40 ` Jay Belanger
2015-11-03 20:15 ` John Wiegley
2015-11-03 20:24 ` Drew Adams
2015-11-03 20:35 ` Changing the tone of emacs-devel (Was: On the popularity of git) John Wiegley
2015-11-03 22:05 ` Artur Malabarba
2015-11-04 7:54 ` Nicolas Petton
2015-11-03 21:47 ` Changing the subject (was: " David Kastrup
2015-11-03 23:37 ` Marcin Borkowski
2015-11-04 0:27 ` John Yates
2015-11-04 1:40 ` Changing the subject Yann Hodique
2015-11-04 15:37 ` John Wiegley
2015-11-03 22:11 ` emacs-devel etiquette (was: Re: On the popularity of git) Stephen Leake
2015-11-04 11:12 ` Future emacs mailing lists. [Was: On the popularity of git] Alan Mackenzie
2015-11-04 7:52 ` On the popularity of git Stephen J. Turnbull
2015-11-03 20:53 ` Richard Stallman
2015-11-03 13:49 ` Andreas Schwab
2015-10-30 12:50 ` On the popularity of git [Was: Git question: when using branches, how does git treat working files when changing branches?] Juanma Barranquero
2015-10-30 14:15 ` David Kastrup
2015-10-30 16:54 ` Juanma Barranquero
2015-10-30 17:31 ` David Kastrup
2015-10-29 16:31 ` Git question: when using branches, how does git treat working files when changing branches? Eli Zaretskii
2015-10-29 16:16 ` Eli Zaretskii
2015-10-29 17:45 ` Davis Herring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=22069.5496.845592.116424@turnbull.sk.tsukuba.ac.jp \
--to=stephen@xemacs.org \
--cc=acm@muc.de \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.