unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Phil Sainty <psainty@orcon.net.nz>
To: Eli Zaretskii <eliz@gnu.org>
Cc: "Óscar Fuentes" <ofv@wanadoo.es>, emacs-devel@gnu.org
Subject: Re: On the adoption of transient.el
Date: Fri, 06 Aug 2021 14:13:28 +1200	[thread overview]
Message-ID: <43a99b5e963075dd1a22a3b2c450f73a@webmail.orcon.net.nz> (raw)
In-Reply-To: <83eeb7kgrb.fsf@gnu.org>

On 2021-08-06 04:17, Eli Zaretskii wrote:
> I'm afraid I'm not following.  If I find by searching the net the
> sequence of Git commands to do some job, I just copy/paste them into
> the shell window, and that's it.  And no need to memorize those
> commands: the next time I need to do the same job, I do the net search
> again.  Since the search hits the right answers very quickly, this is
> very adequate for jobs I need to do rarely (which is why I don't
> remember the commands in the first place).
> 
> What am I missing?

Maybe nothing?  It's hard to say.  On occasion I'll revert to the same
search-online process (an example I can think of being finding the
reference for a deleted-but-not-yet-garbage-collected commit; that's
not something I'd look to Magit to resolve).

Here's a description of Magit that I once wrote.  It wasn't aimed at
Emacs users, so some of the benefits apply equally to vc, and your
definition of "complex" might not align with mine.  The most complex
things I do on a regular basis are probably all related to rebasing,
and you've said you rarely do any of that, whereas I do it a great
deal, partly because Magit makes it so easy.  E.g. If I realise there
is a bug in a commit somewhere in my unmerged work-in-progress branch,
then I will squash the fix into the original commit 99% of the time,
because doing so takes me about 5 seconds.

FWIW...



Magit provides highly interactive views of your repository, with
simple and efficient key bindings to perform actions (which are often
contextual), such that even complex tasks become remarkably quick and
easy to do. A help buffer displays the available keys at any given
time, so it's always easy to see what the options are.

The main status buffer has collapsible sections for the repo as a
whole, so you not only see which files are staged and unstaged (or
untracked, stashed, unpushed, etc), but you can interactively expand
and collapse the entries to see some/all the diffs; stage or unstage
things with at a keystroke (where "things" can be all changes, or a
single file, or a single hunk of the diff for that file, or a
user-selected region!). Grooming your commits is ludicrously easy and
intuitive when you can just eye-ball the current state and then point
at things to add to (or remove from) that state.

Naturally committing and writing (or amending) commit messages inside
the editor is very streamlined.

Logs are interactive, as each line of the log buffer represents a
commit, so any command which accepts a reference (commit hash, branch
name, tag, etc) can be performed by typing the keys for that action
with the cursor on the log entry for that reference, and Magit will
contextually use that reference (or offer it as a default) for the
command (e.g. viewing, branching, merging, rebasing, etc...)

Diffs are interactive, so you can jump to the relevant file in the
editor (in either its 'before' or 'after' state for that diff), or
apply (or revert) the changes for a file/hunk/region of the diff at a
keystroke. e.g. You could display the diff for a stash (or for a
commit from another branch) and then interactively apply only part of
it.

History rewriting becomes trivial when you can stage some changes and
then point at any commit and say "amend this commit", and it just
happens. Or reword an earlier commit message at any time in the same
manner. Or rebase a range of commits onto a different base by visually
choosing the relevant log entries. Or make a series of fixup commits
(again simply choosing the target log entry each time without needing
to care what the hashes are), and then autosquash them all in a couple
of keystrokes.

Magit interacts with existing conflict resolution tools in Emacs, so
you can smoothly deal with conflicts without leaving the editor.

There's plenty more, but hopefully that gives an idea of what Magit is
about.

It doesn't try to provide any unfamiliar abstractions -- it just makes
things fast and easy. Complex things become simple, and simple things
become trivial. There are very few times that I ever find myself
needing a command line to do something with git, as everything which
Magit supports (which more than covers my day-to-day needs) is just
nicer to do inside Magit, without ever leaving the editor.




  parent reply	other threads:[~2021-08-06  2:13 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-03 21:13 On the adoption of transient.el Gabriel
2021-07-05 14:24 ` Philip Kaludercic
2021-07-05 16:09   ` Gabriel
2021-07-05 17:00     ` Stefan Monnier
2021-07-05 19:16       ` Lars Ingebrigtsen
2021-07-05 16:50   ` Yuri Khan
2021-07-05 17:06     ` Eli Zaretskii
2021-07-05 17:29       ` Yuri Khan
2021-07-05 17:49         ` Stefan Monnier
2021-07-05 18:09     ` Philip Kaludercic
2021-08-01 20:19       ` Rudolf Adamkovič
2021-08-01 21:08         ` T.V Raman
2021-08-01 21:24         ` Arthur Miller
2021-08-03 13:07           ` Jonas Bernoulli
2021-08-03 20:00             ` Arthur Miller
2021-08-14  3:17             ` Arthur Miller
2021-08-14 12:54               ` Óscar Fuentes
2021-08-14 20:45                 ` Arthur Miller
2021-08-15 21:57                 ` John Yates
2021-08-16  1:05                   ` Arthur Miller
2021-08-16  1:35                   ` Stefan Monnier
2021-08-16  2:36                     ` Arthur Miller
2021-08-01 21:25         ` Arthur Miller
2021-08-04 11:22         ` Philip Kaludercic
2021-08-04 15:56           ` Óscar Fuentes
2021-08-04 18:56           ` T.V Raman
2021-08-04 19:57             ` Jesse Millwood
2021-08-04 21:45               ` T.V Raman
2021-08-05  7:01                 ` Arthur Miller
2021-08-05  8:59                   ` Eric S Fraga
2021-08-05  9:23                     ` Tim Cross
2021-08-05 10:37                       ` Eric S Fraga
2021-08-05 11:01                         ` Eli Zaretskii
2021-08-05 14:45                           ` Óscar Fuentes
2021-08-05 16:17                             ` Eli Zaretskii
2021-08-05 23:17                               ` Juri Linkov
2021-08-06  6:11                                 ` Eli Zaretskii
2021-08-06  2:13                               ` Phil Sainty [this message]
2021-08-05 23:20                             ` Juri Linkov
2021-08-06 12:39                               ` John Yates
2021-08-06 14:42                                 ` Stefan Monnier
2021-08-06 17:20                                   ` Omar Polo
2021-08-10  7:22                                 ` Juri Linkov
2021-08-10 10:32                                   ` John Yates
2021-08-08  1:21                               ` Dmitry Gutov
2021-08-10  7:15                                 ` Juri Linkov
2021-08-10 12:40                                   ` Dmitry Gutov
2021-08-11  6:58                                     ` Juri Linkov
2021-08-13  3:06                                       ` Dmitry Gutov
2021-08-08  1:42                               ` Alfred M. Szmidt
2021-08-10  7:18                                 ` Juri Linkov
2021-08-10  8:16                                   ` Alfred M. Szmidt
2021-08-11  6:56                                     ` Juri Linkov
2021-08-05  9:38                     ` Arthur Miller
2021-08-05  9:51                       ` Jean-Christophe Helary
2021-08-05 14:33                     ` T.V Raman
2021-08-05 14:55                       ` Eric S Fraga
2021-08-05 15:05                       ` Arthur Miller
2021-08-06 23:02             ` Rudolf Adamkovič
2021-08-07  2:03               ` T.V Raman
2021-08-07  3:15               ` Phil Sainty
2021-08-07 10:19               ` Jonas Bernoulli
2021-08-07 15:42               ` T.V Raman
2021-07-05 19:51     ` Jim Porter
  -- strict thread matches above, loose matches on Subject: below --
2022-07-31  9:08 Manuel Uberti
2022-07-31 13:25 ` T.V Raman
2022-07-31 20:03 ` Juri Linkov
2022-08-21 16:04   ` Juri Linkov
2022-08-01  3:32 ` Richard Stallman

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43a99b5e963075dd1a22a3b2c450f73a@webmail.orcon.net.nz \
    --to=psainty@orcon.net.nz \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=ofv@wanadoo.es \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).