Как я могу сделать флаг `--verbose` включенным по умолчанию на экране фиксации magit?

16

Прямо сейчас, вместо нажатия только ccв режиме magit, я должен нажимать c-vcкаждый раз, чтобы включить --verbose.

Возможно ли сделать его включенным по умолчанию?

Dogbert
источник

Ответы:

17

Начиная с v2.1.0Magit использует библиотеку magit-popup.elдля реализации таких «всплывающих буферов» или «комбинаций префикса-инфикса-суффикса». Несмотря на свое название, эта библиотека может использоваться пакетами, не связанными с Magit, и поэтому предоставляется в виде отдельного пакета Elpa. У него даже есть собственное руководство !

Параметры по умолчанию теперь могут быть установлены непосредственно из всплывающего буфера. Чтобы всегда использовать --verboseпри совершении сделайте это:

  1. c Показать всплывающее окно
  2. - v Включать --verbose
  3. C-x C-sСохранить текущие установленные аргументы как значения по умолчанию (в пользовательской опции magit-commit-arguments)

По умолчанию все всплывающие буферы заканчиваются разделом «Общие команды». Если нет, используйте, C-tчтобы показать это. Вы, вероятно, не хотите видеть этот раздел все время и поэтому должны установить magit-popup-show-common-commandsна nil.

Конечно, также можно установить значение magit-commit-argumentsи других таких переменных с помощью пользовательского интерфейса setq, или add-to-list. Но я рекомендую против этого, потому что это сделало бы невозможным изменение настроек по умолчанию на лету.

Tarsius
источник
7

Насколько я могу судить, Magit не отслеживает параметры «по умолчанию», но мы можем заставить его «нажимать -v» каждый раз, когда выскакивает буфер Committing:

(advice-add #'magit-key-mode-popup-committing :after
            (lambda ()
              (magit-key-mode-toggle-option (quote committing) "--verbose")))

Чтобы найти какую функцию посоветовать, я открыл magic-statusбуфер и нажал C-h k c. Это привело меня к magit-key-mode-popup-committing. Затем (с Совершением буфера все еще отображается) я нажал , C-h k -vчтобы найти lambdaформу Magit звонков , когда вы нажмете -vна Совершение окна.

Обновление: я написал этот ответ независимо, но посмотрите, могу ли я выбрать опцию git-log «--all»? , ответ дан там, и комментарии к этому ответу.

Константин
источник
1
Это интересно! Спасибо, что также объяснили, как вы нашли эти функции :)
Догберт,
@ Dogbert: пожалуйста, смотрите ссылку в обновленном ответе, если вы хотите знать, что другие думали об опциях git по умолчанию не так давно. :-) (Я не знаю, как я пропустил это вчера.)
Константин
4

В версиях magit, в которых используется переходный процесс (после февраля 2019 г. или около того), установите флаг, а затем сохраните, находясь в буфере переходного процесса.

Так что для коммита последовательность клавиш будет что-то вроде

C-x g # start magit
s # to stage changes
c # start commiting
-v # enable verbose
C-x C-s # Save the setting persistently across sessions
c # do the actual commit

После этого, в следующий раз, когда будет зафиксирован коммит, будет установлен подробный текст. (Вам не нужно завершать фиксацию, и вы можете выйти после сохранения с помощью C-x C-s.)

Фактическое значение по умолчанию сохраняется в transient/каталоге в .emacs.d/.

См. Временное руководство https://magit.vc/manual/transient.html#Saving-Values

МНВ
источник
0

Хотя это не совсем то, что вы хотите (diff в вашем буфере коммитов), вы можете установить magit, чтобы расширить ступенчатые различия в окне состояния :

(setq magit-expand-staged-on-commit 'full)

Кажется, что рабочий процесс magit всегда является открытым буфером состояния, а затем открытым разделением с помощью буфера фиксации, в результате всегда отображаются два буфера. Приведенная выше настройка заставит второй (ранее бесполезный) буфер отображать ваши различия.

Вы также можете использовать tтолько для расширения заголовков diff (поэтому он показывает номера строк):

(setq magit-expand-staged-on-commit t)

Во время записи TABразличий вы можете переключиться в буфер состояния и использовать его для расширения (или сворачивания) различий.


В качестве альтернативы, вы можете использовать C-c C-dиз буфера фиксации, чтобы открыть другой буфер с помощью diff magit-diff-staged. (Смотрите эту проблему .)

idbrii
источник
0

Начиная с magitверсии 2.1, вы можете использовать это в вашей конфигурации:

;; When commiting enable verbose mode by default.
(setq magit-commit-arguments (quote ("--verbose")))
Майку Мори
источник
Ты не должен этого делать. Смотри мой ответ.
Tarsius
@tarsius У вас есть правильная точка. Мой пример использования заключается в том, что я синхронизирую свои точечные файлы между несколькими компьютерами, и когда я устанавливаю значение по умолчанию, оно должно быть значением по умолчанию на всех моих компьютерах. Если я хочу изменить это, я просто изменю это в моей конфигурации, и это будет синхронизировано на всех моих компьютерах.
Майку Мори
1
О, и я не использую пользовательские параметры, потому что это затрудняет документирование моей конфигурации. Я предпочитаю устанавливать все явно.
Майку Мори
Кроме того, настройка --no-verifyполезна, когда у вас есть проекты, в которых используются git-хуки (очевидно, используйте с осторожностью).
Дрооганс