Hi Johannes,

On Tue, 10 Jul 2018 at 16:08:57 +0300, Johannes Schindelin wrote:>
On Tue, 10 Jul 2018, Daniel Harding wrote:

On Mon, 09 Jul 2018 at 22:14:58 +0300, Johannes Schindelin wrote:

On Mon, 9 Jul 2018, Daniel Harding wrote:

On Mon, 09 Jul 2018 at 00:02:00 +0300, brian m. carlson wrote:

Should this affect the "# Merge the topic branch" line (and the "# C",
"# E", and "# H" lines in the next test) that appears below this?  It
would seem those would qualify as comments as well.

I intentionally did not change that behavior for two reasons:

a) from a Git perspective, comment characters are only effectual for
comments
if they are the first character in a line

and

b) there are places where a '#' character from the todo list is actually
parsed and used e.g. [0] and [1].  I have not yet gotten to the point of
grokking what is going on there, so I didn't want to risk breaking
something I
didn't understand.  Perhaps Johannes could shed some light on whether the
cases you mentioned should be changed to use the configured commentChar or
not.

[0]
https://github.com/git/git/blob/53f9a3e157dbbc901a02ac2c73346d375e24978c/sequencer.c#L2869
[1]
https://github.com/git/git/blob/53f9a3e157dbbc901a02ac2c73346d375e24978c/sequencer.c#L3797

These are related. The first one tries to support

  merge -C cafecafe second-branch third-branch # Octopus 2nd/3rd branch

i.e. use '#' to separate between the commit(s) to merge and the oneline
(the latter for the reader's pleasure, just like the onelines in the `pick
<hash> <oneline>` lines.

The second ensures that there is no valid label `#`.

I have not really thought about the ramifications of changing this to
comment_line_char, but I guess it *could* work if both locations were
changed.

Is there interest in such a change?  I'm happy to take a stab at it if there
is, otherwise I'll leave things as they are.

I think it would be a fine change, once we convinced ourselves that it
does not break things (I am a little worried about this because I remember
just how long I had to reflect about the ramifications with regards to the
label: `#` is a valid ref name, after all, and that was the reason why I
had to treat it specially, and I wonder whether allowing arbitrary comment
chars will require us to add more such special handling that is not
necessary if we stick to `#`).

Would it simpler/safer to perhaps put the oneline on its own commented line above? I know it isn't quite consistent with the way onelines are displayed for normal commits, but it might be a worthwhile tradeoff for the sake of the code. As an idea of what I am suggesting, your example above would become perhaps

    # Merge: Octopus 2nd/3rd branch
    merge -C cafecafe second-branch third-branch

or perhaps just

    # Octopus 2nd/3rd branch
    merge -C cafecafe second-branch third-branch

Thoughts?

Not that the comment line char feature seems to be all that safe. I could
imagine that setting it to ' ' (i.e. a single space) wreaks havoc with
Git, and we have no safeguard to error out in this obviously broken case.

Technically, I think a single space might actually work with commit messages (at least, I can't off the top of my head think of a case where git would insert a non-comment line starting with a space if it wasn't already present in a commit message). But if someone were actually crazy enough to do that I might suggest a diagnosis of "if it hurts, don't do that" rather than trying to equip git defend against that sort of thing.

Daniel Harding

Reply via email to