Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Junio C Hamano
Matthieu Moy  writes:

> There's an alternative:
>
> $ git rebase --edit-todo
> # Make mistakes, save and quit
> Your todo-list has the following issues:
> - ...
> Do you want to edit again (no aborts the rebase) [Y/n]?
>
> There's a precedent with the 'e' command of "git add -p". I have a
> slight preference for non-interactive commands so I prefer not going
> this way though.

edit-todo (and "rebase -i" in general) is all about going
interactive, isn't it?  I was almost going to suggest to keep
spawning the editor until the user gets it right, but that would
infinitely repeat when GIT_EDITOR is set to a broken script, so
I didn't ;-).
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Matthieu Moy
Remi Galan Alfonso  writes:

> Junio C Hamano  writes:
>> The place where an error can be introduced is (assuming that what
>> "rebase -i" writes out itself is perfect ;-) where we allow the user
>> to edit, so instead of checking before "--continue", I would expect
>> a sane design would check immediately after the editor we spawned
>> returns.
>
> Makes sense but we would have the problem mentioned by Matthieu:
>> Warning: the command isn't recognized ...
>>   
>> # Hmm, let's ignore that warning
>> $ git rebase --continue

There's an alternative:

$ git rebase --edit-todo
# Make mistakes, save and quit
Your todo-list has the following issues:
- ...
Do you want to edit again (no aborts the rebase) [Y/n]?

There's a precedent with the 'e' command of "git add -p". I have a
slight preference for non-interactive commands so I prefer not going
this way though.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Remi Galan Alfonso
Matthieu Moy  writes:
> Remi Galan Alfonso  writes:
> 
> > Galan Rémi  writes:
> >> Shouldn't all the checking also be called in a 'rebase --continue',
> >> considering that it can be called after a 'rebase --edit-todo' ?
> >> (Right now it is only called after closing the editor in 'rebase -i')
> >
> > What's your opinion on it?
> 
> It would probably be better to run the check when running "git rebase
> --continue". This way, we would have a guarantee that the todo-list is
> syntactically correct when going through it.
> 
> Just checking after --edit-todo would not guarantee that:

That's actually what I had in mind, my message wasn't clear enough, my
bad.

> But in any case, the most important is the initial edition. It covers
> 99.9% of use-cases. So, I'd say: if you have time to add the checks at
> the other relevant places, good, but not doing it shouldn't block the
> inclusion of the series.

Agreed, that's something that can be done in a future patch without
interfering with this one.

Junio C Hamano  writes:
> The place where an error can be introduced is (assuming that what
> "rebase -i" writes out itself is perfect ;-) where we allow the user
> to edit, so instead of checking before "--continue", I would expect
> a sane design would check immediately after the editor we spawned
> returns.

Makes sense but we would have the problem mentioned by Matthieu:
> Warning: the command isn't recognized ...
>   
> # Hmm, let's ignore that warning
> $ git rebase --continue

While in most cases it would be irrelevant (it would be the user that 
ignored the error on purpose), I can imagine the following situation:
 - 'git rebase --edit-todo'
 - get an error
 - go do something else, forgot where I was when I come back
 - 'git status', "you are in the middle of a rebasing"
 - 'git rebase --continue'

> The codepath that allows the insn sheet getting edited and the
> codepath that handles --edit-todo have to do many things the same
> way (i.e. use collapse_todo_ids to prepare the file for editing,
> spawn the editor, receive the result and use expand_todo_ids to
> prepare the file to be used by us), and I would have expected for
> these two to be using a single helper---and a sanity check like the
> above can and should be done when we receive the result from the
> editor, immediately before running expand_todo_ids perhaps.
> 
> If they are not using such a single helper right now, perhaps that
> is the preliminary restructuring of the code that is needed?

Good point, maybe I'll try doing that at a later date, however as
Matthieu said, I think it doesn't hurt to add this patch (if there is
no further corrections to do) and do additional things in a later
patch.

Thanks,
Rémi
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Junio C Hamano
Remi Galan Alfonso 
writes:

> Galan Rémi  writes:
>> Shouldn't all the checking also be called in a 'rebase --continue',
>> considering that it can be called after a 'rebase --edit-todo' ?
>> (Right now it is only called after closing the editor in 'rebase -i')
>
> What's your opinion on it?
>
> Short example:
>
> 'git rebase -i HEAD~2'
>   pick commit_sha_1 commit_msg_1
>   tick commit_sha_2 commit_msg_2
> An error is raised before anything is done.
> 'git rebase --edit-todo'
>   pick commit_sha_1 commit_msg_1
>   tick commit_sha_2 commit_msg_2
> (nothing changed)
> 'git rebase --continue'
> An error is raised after having picked the first commit.
>
> The same is relevent with bad sha and missing commits (in fact even
> more relevant with missing commits since that would be silent loss of
> information).

The place where an error can be introduced is (assuming that what
"rebase -i" writes out itself is perfect ;-) where we allow the user
to edit, so instead of checking before "--continue", I would expect
a sane design would check immediately after the editor we spawned
returns.

The codepath that allows the insn sheet getting edited and the
codepath that handles --edit-todo have to do many things the same
way (i.e. use collapse_todo_ids to prepare the file for editing,
spawn the editor, receive the result and use expand_todo_ids to
prepare the file to be used by us), and I would have expected for
these two to be using a single helper---and a sanity check like the
above can and should be done when we receive the result from the
editor, immediately before running expand_todo_ids perhaps.

If they are not using such a single helper right now, perhaps that
is the preliminary restructuring of the code that is needed?

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Matthieu Moy
Remi Galan Alfonso  writes:

> Galan Rémi  writes:
>> Shouldn't all the checking also be called in a 'rebase --continue',
>> considering that it can be called after a 'rebase --edit-todo' ?
>> (Right now it is only called after closing the editor in 'rebase -i')
>
> What's your opinion on it?

It would probably be better to run the check when running "git rebase
--continue". This way, we would have a guarantee that the todo-list is
syntactically correct when going through it.

Just checking after --edit-todo would not guarantee that:

  $ git rebase --edit-todo
  # Add some syntax errors, save and quit
  Warning: the command isn't recognized ...
  
  # Hmm, let's ignore that warning
  $ git rebase --continue
  Unknown command: ...
  Please fix this using 'git rebase --edit-todo'

But in any case, the most important is the initial edition. It covers
99.9% of use-cases. So, I'd say: if you have time to add the checks at
the other relevant places, good, but not doing it shouldn't block the
inclusion of the series.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Remi Galan Alfonso
Matthieu Moy  writes:
> Hi,
> 
> Here are a few fixes to squash into the commits of the series. Other
> than that, the series looks good to me.
> 
> Junio: do you prefer a reroll or do you want to apply locally?
> 
> Matthieu Moy (3):
>   fixup! git rebase -i: add static check for commands and SHA-1
>   fixup! git rebase -i: warn about removed commits
>   fixup! git rebase -i: warn about removed commits
> 
>  git-rebase--interactive.sh| 32 +---
>  t/t3404-rebase-interactive.sh |  4 ++--
>  2 files changed, 23 insertions(+), 13 deletions(-)

Thanks for the various fixes !

However, I am still wondering about:

Galan Rémi  writes:
> Shouldn't all the checking also be called in a 'rebase --continue',
> considering that it can be called after a 'rebase --edit-todo' ?
> (Right now it is only called after closing the editor in 'rebase -i')

What's your opinion on it?

Short example:

'git rebase -i HEAD~2'
pick commit_sha_1 commit_msg_1
tick commit_sha_2 commit_msg_2
An error is raised before anything is done.
'git rebase --edit-todo'
pick commit_sha_1 commit_msg_1
tick commit_sha_2 commit_msg_2
(nothing changed)
'git rebase --continue'
An error is raised after having picked the first commit.

The same is relevent with bad sha and missing commits (in fact even
more relevant with missing commits since that would be silent loss of
information).

Thanks,
Rémi
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 0/3] rebase -i: drop, missing commits and static checks

2015-06-30 Thread Matthieu Moy
Hi,

Here are a few fixes to squash into the commits of the series. Other
than that, the series looks good to me.

Junio: do you prefer a reroll or do you want to apply locally?

Matthieu Moy (3):
  fixup! git rebase -i: add static check for commands and SHA-1
  fixup! git rebase -i: warn about removed commits
  fixup! git rebase -i: warn about removed commits

 git-rebase--interactive.sh| 32 +---
 t/t3404-rebase-interactive.sh |  4 ++--
 2 files changed, 23 insertions(+), 13 deletions(-)

-- 
2.5.0.rc0.10.g7792c2a

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


rebase -i: drop, missing commits and static checks

2015-06-29 Thread Galan Rémi
Changes between versions:

In t3404:

Changed 'test_rebase_end' to 'rebase_setup_and_clean'.
Changed the indentation in 'rebase_setup_and_clean'.
Changed the names of the branches created in my tests (avoid names
like 'tmp').
Added 'test_might_fail' in front of 'git branch -D'.
Remove 'test_config rebase.missingCommitsCheck error' in the last test
('static check of bad SHA-1') because it was useless.

In git-rebase--interactive.sh:

Errors found in commands and SHA-1 (static check) are displayed on the
spot.
I used return values to signal to the calling functions if there is an
error.
The whole while block in 'check_bad_cmd_and_sha' with the return is in a 
'(
[...]
)'
block because 'retval' would not have been correctly affected when
getting out of the loop since the while is in a pipe.

A thought occured to me:
Shouldn't all the checking also be called in a 'rebase --continue',
considering that it can be called after a 'rebase --edit-todo' ?
(Right now it is only called after closing the editor in 'rebase -i')

[PATCHv7 1/3] git-rebase -i: add command "drop" to remove a commit
[PATCHv7 2/3] git rebase -i: warn about removed commits
[PATCHv7 3/3] git rebase -i: add static check for commands and SHA-1

Rémi
(It seems that with 'send-email', 1 time out of 2 I get:
'5.7.8 Error: authentication failed: authentication failure')
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html