git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH/RFC 0/2] custom format for interactive rebase todo
@ 2014-09-09  4:47 William Clifford
  2014-09-09 16:58 ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: William Clifford @ 2014-09-09  4:47 UTC (permalink / raw)
  To: git

I'm sorry if this shows up twice. I messed up the first time.

I was recently in a situation of rebasing a topic branch with many
commits by several colleagues and I thought it would be useful if I
could see the author of the commit in the commit table in the rebase
todo file. I wanted try to squash commits by the same author where
appropriate. With the help of Matt Boeh, we figured out how to patch in
custom formatting of this line, and I have been trying it out for the
last couple of weeks and it seems to work pretty well.

A couple of examples:

- `git config sequence.format "%<(12,trunc)%ae %s"`
- `git config sequence.format "%s <%aN %aE>"`
- `git config sequence.format "%s%n%%n%b"`

The first one tries to conserve linespace, which is a good idea for
these formats. The second one could be really long but otherwise
harmless. I'm unsure what would happen if I tried to rebase with the
third style unedited or uncommented. I'm wary of casually testing it. It
does not seem like a good idea, and should perhaps be discouraged.

Please let me know what you think.

William Clifford (2):
  Add sequence.format to interactive rebase
  Add documentation of sequence.format to interactive rebase

 Documentation/config.txt   |  9 +++++++++
 git-rebase--interactive.sh | 14 +++++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)

-- 
William Clifford

Message-ID: <867g1dia81.fsf@gmail.com>
X-Draft-From: ("INBOX")

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH/RFC 0/2] custom format for interactive rebase todo
  2014-09-09  4:47 [PATCH/RFC 0/2] custom format for interactive rebase todo William Clifford
@ 2014-09-09 16:58 ` Junio C Hamano
  2014-09-09 17:07   ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2014-09-09 16:58 UTC (permalink / raw)
  To: William Clifford; +Cc: git

William Clifford <mr.william.clifford@gmail.com> writes:

> A couple of examples:
>
> - `git config sequence.format "%<(12,trunc)%ae %s"`
> - `git config sequence.format "%s <%aN %aE>"`
> - `git config sequence.format "%s%n%%n%b"`
> ... I'm unsure what would happen if I tried to rebase with the
> third style unedited or uncommented.

It should be simply forbidden.  The body part may have a line that
is similar enough (i.e. starting with one of the command words and
then a hexadecimal string) to confuse the sequencing machinery.

Other than that safety issue, I am not fundamentally opposed to the
idea.

As to the implementation in 1/2, your unconditional use of ">%h" is
wrong (you would end up including the commits from the left side).

Use '%m' instead of a hardcoded '>', perhaps?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH/RFC 0/2] custom format for interactive rebase todo
  2014-09-09 16:58 ` Junio C Hamano
@ 2014-09-09 17:07   ` Junio C Hamano
  2014-09-10 14:48     ` William Clifford
  0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2014-09-09 17:07 UTC (permalink / raw)
  To: William Clifford; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> William Clifford <mr.william.clifford@gmail.com> writes:
>
>> A couple of examples:
>>
>> - `git config sequence.format "%<(12,trunc)%ae %s"`
>> - `git config sequence.format "%s <%aN %aE>"`
>> - `git config sequence.format "%s%n%%n%b"`
>> ... I'm unsure what would happen if I tried to rebase with the
>> third style unedited or uncommented.
>
> It should be simply forbidden.  The body part may have a line that
> is similar enough (i.e. starting with one of the command words and
> then a hexadecimal string) to confuse the sequencing machinery.
>
> Other than that safety issue, I am not fundamentally opposed to the
> idea.
>
> As to the implementation in 1/2, your unconditional use of ">%h" is
> wrong (you would end up including the commits from the left side).
>
> Use '%m' instead of a hardcoded '>', perhaps?

Also, I do not think you want to make the prepending of "%m%h "
conditional.  If the user for whatever silly reason asks to use a
format "%m%h %m%h %m%h", let her have that _after_ the "%m%h " the
machinery needs to operate, i.e. "%m%h %m%h %m%h %m%h".  It is far
easier to explain to the users and you can lose three lines from the
second patch.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH/RFC 0/2] custom format for interactive rebase todo
  2014-09-09 17:07   ` Junio C Hamano
@ 2014-09-10 14:48     ` William Clifford
  2014-09-10 17:11       ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: William Clifford @ 2014-09-10 14:48 UTC (permalink / raw)
  To: Junio C Hamano, git

Thanks! I've set it up just this way and it seems to work fine.

It turns out the formatted string is processed by the shell `read`
later on, which happens to ignore everything after the first line, so
it seems like it should be safe. But doing something explicit about it
seems like a good idea in this case. I will see about actually reading
in additional lines and raising an error, but it occurs to me that if
I can read in the additional lines, I could also insert them as
comments, and then it should be as safe as any of the other comments
inserted in the rebase todo. In any case I will look into it and
prepare another patch.

On Tue, Sep 9, 2014 at 10:07 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> William Clifford <mr.william.clifford@gmail.com> writes:
>>
>>> A couple of examples:
>>>
>>> - `git config sequence.format "%<(12,trunc)%ae %s"`
>>> - `git config sequence.format "%s <%aN %aE>"`
>>> - `git config sequence.format "%s%n%%n%b"`
>>> ... I'm unsure what would happen if I tried to rebase with the
>>> third style unedited or uncommented.
>>
>> It should be simply forbidden.  The body part may have a line that
>> is similar enough (i.e. starting with one of the command words and
>> then a hexadecimal string) to confuse the sequencing machinery.
>>
>> Other than that safety issue, I am not fundamentally opposed to the
>> idea.
>>
>> As to the implementation in 1/2, your unconditional use of ">%h" is
>> wrong (you would end up including the commits from the left side).
>>
>> Use '%m' instead of a hardcoded '>', perhaps?
>
> Also, I do not think you want to make the prepending of "%m%h "
> conditional.  If the user for whatever silly reason asks to use a
> format "%m%h %m%h %m%h", let her have that _after_ the "%m%h " the
> machinery needs to operate, i.e. "%m%h %m%h %m%h %m%h".  It is far
> easier to explain to the users and you can lose three lines from the
> second patch.



-- 
William Clifford

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH/RFC 0/2] custom format for interactive rebase todo
  2014-09-10 14:48     ` William Clifford
@ 2014-09-10 17:11       ` Junio C Hamano
  0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2014-09-10 17:11 UTC (permalink / raw)
  To: William Clifford; +Cc: git

William Clifford <mr.william.clifford@gmail.com> writes:

> I will see about actually reading
> in additional lines and raising an error, but it occurs to me that if
> I can read in the additional lines, I could also insert them as
> comments, and then it should be as safe as any of the other comments
> inserted in the rebase todo.

;-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-09-10 17:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-09  4:47 [PATCH/RFC 0/2] custom format for interactive rebase todo William Clifford
2014-09-09 16:58 ` Junio C Hamano
2014-09-09 17:07   ` Junio C Hamano
2014-09-10 14:48     ` William Clifford
2014-09-10 17:11       ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.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).