Bug 33452

Summary: gear-commit - выход без записи равно прекращению коммита
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: gearAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: glebfm, ldv, legion, placeholder, rider, sotor, vseleznv
Version: unstableKeywords: patch
Hardware: all   
OS: Linux   
URL: http://git.altlinux.org/people/ldv/packages/gear.git?p=gear.git;a=commit;h=d002f5f8e87d4380d474bd47117ddb571100106e

Description Anton Farygin 2017-05-05 12:30:12 MSK
было бы неплохо сделать поведение аналогичное git commit - т.е. - выход без записи изменений равноценен прекращению commit'а.
Comment 1 Dmitry V. Levin 2017-10-28 03:09:26 MSK
В отличие от git commit, gear-commit генерит commit message по-умолчанию,
которое я обычно оставляю без редактирования.

Сомневаюсь, что предлагаемое изменение поведеня gear-commit было бы удобнее нынешнего.
Comment 2 Anton Farygin 2017-10-28 08:13:42 MSK
Конечно же удобнее - выход без записи по сути отмена коммита.
Ну мало ли что, передумал.
а так приходит откатывать коммит.
Comment 3 Alexey Gladkov 2017-10-28 19:38:39 MSK
(В ответ на комментарий №2)
> Ну мало ли что, передумал.
> а так приходит откатывать коммит.

Если ты передумал после того как запустил gear-commit, то достаточно просто удалить текст, сохранить и выйти и тогда коммита не будет. И не нужно ничего откатывать.
Comment 4 Dmitry V. Levin 2017-10-29 03:30:51 MSK
Вообще gear-commit был придуман в основном для того, чтобы commit message формировался автоматически, поэтому его, как правило, никто не редактирует и не записывает.

На самом деле мне было бы удобнее, если бы, наоборот, можно было бы сказать
git config --global gear.commit.edit no
и получить таким образом --no-edit без необходимости это явно указывать.

И ещё, я думаю что было бы правильно, если бы --no-edit, если уж этот параметр так или иначе был указан, передавался бы git commit'у, как сейчас передаётся --edit.
Comment 5 Anton Farygin 2017-10-29 08:13:04 MSK
Я опять о том, что поведение git commit и gear-commit было бы здорово сделать одинаковым.

Выход из редактирования git сommit без сохранения означает commit cancel.
Выход из gear-commit без сохранение приводит к коммиту.
Comment 6 Alexey Gladkov 2017-10-30 13:39:54 MSK
(В ответ на комментарий №4)
> Вообще gear-commit был придуман в основном для того, чтобы commit message
> формировался автоматически, поэтому его, как правило, никто не редактирует и не
> записывает.
> 
> На самом деле мне было бы удобнее, если бы, наоборот, можно было бы сказать
> git config --global gear.commit.edit no
> и получить таким образом --no-edit без необходимости это явно указывать.
> 
> И ещё, я думаю что было бы правильно, если бы --no-edit, если уж этот параметр
> так или иначе был указан, передавался бы git commit'у, как сейчас передаётся
> --edit.

А это уже похоже на нормальный такой featue request! )))
Comment 7 Alexey Gladkov 2017-10-30 13:42:38 MSK
(В ответ на комментарий №5)
> Я опять о том, что поведение git commit и gear-commit было бы здорово сделать
> одинаковым.
> 
> Выход из редактирования git сommit без сохранения означает commit cancel.
> Выход из gear-commit без сохранение приводит к коммиту.

Можно попробовать сделать это переметризируемым... gear.commit.save=true (более правильное название параметра приветствуется) и по этому параметру требовать сохраннения.
Comment 8 Dmitry V. Levin 2017-10-30 14:04:48 MSK
(In reply to comment #7)
> (В ответ на комментарий №5)
> > Я опять о том, что поведение git commit и gear-commit было бы здорово сделать
> > одинаковым.
> > 
> > Выход из редактирования git сommit без сохранения означает commit cancel.
> > Выход из gear-commit без сохранение приводит к коммиту.
> 
> Можно попробовать сделать это переметризируемым... gear.commit.save=true (более
> правильное название параметра приветствуется) и по этому параметру требовать
> сохраннения.

Насколько я помню, git commit делает cancel в случае, если commit message пустой, а не в случае "без сохранения".

Поэтому реализовать gear.commit.require_saved_message=true будет сложнее, чем кажется.
Comment 10 Sergey Novikov 2017-12-25 15:27:09 MSK
Попробовал поведение следующее:

1. gear.commit.edit-message true
gear.commit.require-message-save true
Вызывается редактор с автоматическим commit message:
<gear-commit message template, please remove this line and save to commit>
Если сообщение отредактировать и сохранить, делается коммит.
Если не редактировать/не сохранять, коммит отменяется

2. gear.commit.edit-message false
gear.commit.require-message-save true
Поведение аналогично пункту 1.

3. gear.commit.edit-message true
gear.commit.require-message-save false
Вызывает редактор с сообщением аналогично аналогично параметру --edit
Коммит делается в любом случае
Comment 11 Repository Robot 2018-03-07 01:41:32 MSK
gear-2.2.0-alt1 -> sisyphus:

Tue Mar 06 2018 Dmitry V. Levin <ldv@altlinux> 2.2.0-alt1
- gear-srpmimport: honor RPMFILE_SPECFILE.
- gear-changelog (by Alexey Gladkov):
  + added --no-credits option to omit credits;
  + added --no-header option to omit changelog header;
  + added --since-date option to show commits since a specified date.
- gear-commit (by Alexey Gladkov; closes: #33452):
  + added gear.commit.edit-message config parameter: when set to true,
    an editor is invoked for further editing of the generated commit
    message;
  + added gear.commit.require-message-save config parameter: when set
    to true, the commit is aborted if the generated commit message
    has not been edited by the user.
- Updated bash completion for gear (by Alexey Gladkov).
Comment 12 Anton Farygin 2018-03-07 07:33:56 MSK
Спасибо, работает.