Làm cách nào tôi có thể làm cho cờ `--verbose` được bật theo mặc định trong màn hình cam kết magit?


16

Ngay bây giờ, thay vì chỉ nhấn ccở chế độ magit, tôi phải nhấn c-vcmỗi lần để bật --verbose.

Có thể làm cho nó được kích hoạt theo mặc định?

Câu trả lời:


17

Bắt đầu với v2.1.0, Magit sử dụng thư viện magit-popup.elđể thực hiện các "bộ đệm bật lên" hoặc "combo tiền tố-hậu tố-hậu tố". Mặc dù tên của nó, thư viện đó có thể được sử dụng bởi các gói không liên quan đến Magit, và do đó được cung cấp dưới dạng gói Elpa riêng biệt. Nó thậm chí có hướng dẫn riêng của nó bây giờ!

Đối số mặc định bây giờ có thể được đặt trực tiếp từ bộ đệm bật lên. Để luôn luôn sử dụng --verbosekhi cam kết làm điều này:

  1. c Hiển thị cửa sổ bật lên cam kết
  2. - v Bật --verbose
  3. C-x C-sLưu các đối số hiện được đặt làm mặc định (trong tùy chọn tùy chỉnh magit-commit-arguments)

Theo mặc định, tất cả các bộ đệm bật lên kết thúc bằng một phần có tên "Lệnh chung". Nếu không, sử dụng C-tđể hiển thị nó. Bạn có thể không muốn xem phần đó mọi lúc và do đó nên đặt magit-popup-show-common-commandsthành nil.

Tất nhiên, cũng có thể đặt giá trị của magit-commit-argumentsvà các biến khác như vậy bằng giao diện Tùy chỉnh setq, hoặc add-to-list. Nhưng tôi khuyên bạn nên chống lại điều đó, bởi vì điều đó sẽ khiến không thể thay đổi mặc định khi đang bay.


7

Theo như tôi có thể nói Magit không theo dõi các tùy chọn "mặc định", nhưng chúng ta có thể làm cho "nhấn -v" mỗi khi bộ đệm Cam kết bật lên:

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

Để tìm chức năng cần tư vấn, tôi mở một magic-statusbộ đệm và nhấn C-h k c. Điều này dẫn tôi đến magit-key-mode-popup-committing. Sau đó (với bộ đệm Cam kết vẫn được hiển thị) Tôi nhấn C-h k -vđể tìm lambdabiểu mẫu Cuộc gọi Magit khi bạn nhấn -vtrong cửa sổ Cam kết.

Cập nhật: Tôi đã viết câu trả lời này một cách độc lập, nhưng hãy xem Tôi có thể chọn tùy chọn git-log --allall ban đầu không? , câu trả lời được đưa ra ở đó, và ý kiến ​​cho câu trả lời đó.


1
Nó thật thú vị! Cảm ơn bạn cũng đã giải thích làm thế nào bạn tìm thấy các chức năng đó :)
Dogbert

@Dogbert: vui lòng xem liên kết trong câu trả lời được cập nhật nếu bạn quan tâm để biết rằng những người khác nghĩ về các tùy chọn git mặc định cách đây không lâu. :-) (Tôi không biết làm thế nào tôi đã bỏ lỡ điều đó ngày hôm qua.)
Constantine

4

Trong các phiên bản pháp sư sử dụng tạm thời (sau tháng 2 năm 2019 hoặc lâu hơn), đặt cờ, sau đó lưu trong khi vẫn ở trong bộ đệm tạm thời.

Vì vậy, đối với cam kết, chuỗi khóa sẽ giống như

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

Sau đó, lần cam kết tiếp theo được gọi, verbose vẫn sẽ được đặt. (Bạn không phải hoàn thành cam kết và có thể thoát sau khi lưu với C-x C-s.)

Mặc định thực tế được lưu trong một transient/thư mục trong .emacs.d/.

Xem hướng dẫn tạm thời https://magit.vc/manual/transient.html#Saving-Values


0

Mặc dù nó không chính xác như những gì bạn muốn (diff trong bộ đệm cam kết của bạn), bạn có thể đặt magit để mở rộng các khác biệt theo giai đoạn trong cửa sổ trạng thái :

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

Luồng công việc magit dường như luôn luôn là bộ đệm trạng thái mở và sau đó mở tách với bộ đệm cam kết, bạn luôn kết thúc với hai bộ đệm được hiển thị. Cài đặt ở trên sẽ làm cho bộ đệm thứ hai (trước đây không hữu ích) hiển thị diff của bạn.

Bạn cũng có thể sử dụng tđể chỉ mở rộng các tiêu đề khác (để nó hiển thị số dòng):

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

Trong khi viết diff của bạn, bạn có thể chuyển sang bộ đệm trạng thái và sử dụng TABđể mở rộng (hoặc gấp) diffs.


Ngoài ra, bạn có thể sử dụng C-c C-dtừ bộ đệm cam kết để mở một bộ đệm khác với khác với magit-diff-staged. (Xem vấn đề này .)


0

magitphiên bản 2.1, bạn có thể sử dụng điều này trong cấu hình của bạn:

;; When commiting enable verbose mode by default.
(setq magit-commit-arguments (quote ("--verbose")))

Bạn không nên làm điều đó. Xem câu trả lời của tôi.
tarsius

@tarsius Bạn có một điểm hợp lệ. Usecase của tôi là tôi đồng bộ hóa các dotfiles của mình giữa nhiều máy tính và khi tôi đặt mặc định thì nó sẽ được mặc định trên tất cả các máy tính của tôi. Nếu tôi muốn thay đổi nó, tôi sẽ chỉ thay đổi nó trong cấu hình của mình và nó sẽ được đồng bộ hóa trên tất cả các máy tính của tôi.
Maiku Mori

1
Ồ và tôi không sử dụng các tùy chọn tùy chỉnh vì nó làm cho cấu hình của tôi khó ghi lại. Tôi thích đặt mọi thứ rõ ràng.
Maiku Mori

Ngoài ra, cài đặt --no-verifyrất hữu ích khi bạn có các dự án sử dụng git hook (sử dụng một cách thận trọng, rõ ràng).
Dropogans
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.