Subject: bug#15365: 24.3.50; Segfault when calling vc-git-log-edit-toggle-amend

From: Dmitry Gutov <[email-masked]>
Date: Sun, 15 Sep 2013 17:53:04 +0300

On 15.09.2013 09:20, Eli Zaretskii wrote:
> Do the situations that triggered the bug involve font changes?

Not to my knowledge, no.

> In any case, that revision was about making redisplay optimizations
> more aggressive, so it is small wonder that try_window_id, which is
> part of those optimizations, is now called in situations where
> previously it wasn't.  IOW, it is quite possible that there's nothing
> wrong with try_window_id being invoked in these situations.

I see.

>> (TIL that 'git bisect', unlike its Bazaar counterpart, supports
>> filtering commits by files they touched. xdisp.c, in this example).
>
> The display engine is not limited to xdisp.c; dispnew.c and
> dispextern.h are important parts of it, and sometimes window.c and the
> display-specific back-ends (xterm.c and xfns.c for X and similarly for
> w32 and NS) are also involved.

I figured that most changes to the display engine would still touch 
xdisp.c, though maybe it was just a lucky guess.

>> None of GitHub repositories are publicly writable, so there's zero
>> danger of that.
>
> Thanks, I didn't know that.  (Of course, I never had to use GitHub,
> either.)

I think it's the same with most of the project hostings. Such as 
Savannah, for example.

> I know about "git push" vs "git commit".  What I didn't know is what
> exactly do the Emacs commands you used do, in git terms, and how does
> that relate to commit and push and the myriad of their options.  The
> only thing that was clear to me was that a commit is required, because
> that's what "C-x v v" does in a modified buffer.  I know nothing about
> "C-c C-e" in that context.

`C-x v v` won't perform the commit until you press `C-c C-c`.

`vc-git-log-edit-toggle-amend` works in a Log-Edit buffer. It just 
toggles the value of the "Amend" header and inserts the last commit's 
message, so that the user can edit it before committing.

> And even if I knew that "push" is not involved, committing to a
> repository that tracks upstream development (which is all I do with
> git) would need some way to subsequently un-commit that, something I
> don't know how to do with git.  I didn't want to screw up my work on
> GNU Make and Gawk, I'm sure you will understand.

Sure. But just in case you're eventually going to make time to study 
Git, 'git reset' is the command you're looking for.

And speaking of experimenting, you can just create a new local 
repository, not tied to any remotes, with 'git init'.