2013-11-23 18 views
5

Gần đây tôi đã bắt đầu sử dụng gói magit trong emacs và nó thực sự hữu ích và tiện dụng. Tôi muốn thực hiện một vài điều chỉnh.Làm thế nào để làm cho magit kéo để có tùy chọn rebase theo mặc định?

Làm cách nào để làm cho magit kéo luôn có tùy chọn rebase ?. Hiện tại nó hiển thị các nút chuyển và tôi phải chọn -r --rebase. Trong quá trình dev của tôi, chúng tôi luôn luôn rebase.

Tôi sử dụng gtags + toàn cầu để duyệt mã. Khi magit kéo, Sẽ thật tuyệt nếu tôi có thể có một cái móc để xây dựng lại các gtags một lần nữa. Có móc sau git kéo thành công?

+0

Người ta có thể cho rằng bạn nên thay đổi quy trình phát triển của mình để không cần phải hợp nhất/rebasing trên 'git pull'. Đừng làm việc trên một nhánh chia sẻ, nhưng tạo ra các nhánh tính năng của riêng bạn. – lunaryorn

+0

Lưu ý, trong Magit 2, tính năng này được tích hợp sẵn cho tất cả các lệnh. Chỉ cần mở popup cho chế độ, thiết lập tùy chọn, và sau đó 'C-x C-s' để lưu chúng như mặc định. – blujay

Trả lời

3

Tôi không biết bất kỳ thiết lập Magit cụ thể, nhưng bạn chỉ có thể cấu hình git bản thân cho phù hợp:

git config --global pull.rebase true 

tôi muốn tư vấn cho đúng chống về cách kích hoạt tính năng này trên toàn cầu.

Như tôi đã nói trong nhận xét của tôi, bạn thực sự nên thay đổi quy trình phát triển của mình để không cần phải hợp nhất/rebasing trên git pull. Không làm việc trên các nhánh được chia sẻ, mà thay vào đó luôn tạo các nhánh tính năng của riêng bạn cho công việc của bạn và kết hợp một cách rõ ràng khi cần.

Sau đó, bạn có thể định cấu hình rõ ràng các chi nhánh được chia sẻ riêng lẻ trong kho lưu trữ của mình để rebasing, ví dụ:

git config --local branch.my-fancy-feature.rebase true 

Đối với móc, không có móc cụ thể cho git pull. Tuy nhiên, cũng không có hại trong việc cập nhật tệp thẻ trên các thay đổi khác đối với cây, vì vậy bạn có thể chỉ cần móc nối post-rewrite (cho git rebase) và post-merge (cho git merge).

Xem bài đăng của Tim Pope Effortless Ctags with Git để biết chi tiết về thiết lập như vậy.

+0

cảm ơn cho đầu vào.Tôi đang tìm giải pháp magit vì tôi sử dụng nó rất nhiều trong các emacs. Giới thiệu về cập nhật gtags, tôi đã tìm thấy giải pháp này. https://github.com/rvoicilas/inotify-tools/wiki Nó có thể cập nhật nếu có bất kỳ tập tin nào được sửa đổi. – sudurais

+0

Trình bảo quản Magit tại đây. Không có tùy chọn đặc biệt về ma thuật cho điều này và tôi không nghĩ rằng nó sẽ là một ý tưởng tốt để thêm một. (Nếu chúng ta thêm một tùy chọn elisp ở đây, tại sao không cho mọi biến git khác?). Thiết lập địa phương này bằng cách sử dụng git-config như @ lunaryorn gợi ý là một giải pháp tốt. Ngoài ra, bạn chỉ nên sử dụng lệnh rebase ('R'). Giống như lệnh kết hợp ('m') mặc định để đưa vào các thay đổi từ nhánh ngược dòng đã được cấu hình. – tarsius

+0

Tôi có một câu hỏi, mà tôi nghĩ là có liên quan. Trong cửa sổ bật lên được gọi bởi l (og), có công tắc "-al: All (--all)". Có cách nào để thực hiện điều này theo mặc định thông qua cấu hình không? Tôi đã có thể làm điều đó thông qua việc chỉnh sửa chức năng tạo ra khóa-magit-mode trong magit-key-mode.el như (ghi nhật ký '(danh sách "--graph" "--all")) Nhưng tôi sẽ muốn tránh chỉnh sửa tệp gốc. –

2

Thêm tin sau vào tệp .emacs:

(defun magit-key-mode--add-default-options (arguments) 
    (if (eq (car arguments) 'pulling) 
     (list 'pulling (list "--rebase")) 
    arguments)) 
(advice-add 'magit-key-mode :filter-args #'magit-key-mode--add-default-options) 
2

Mã này sẽ làm những gì bạn muốn và làm cho nó dễ dàng để thêm các tùy chọn mặc định cho nhiều chế độ:

(defun magit-key-mode--add-default-options (arguments) 
    (let* ((mode (car arguments)) 
     (options (cadr arguments)) 
     (default-options (cdr (assoc mode my/magit-default-options)))) 
    (list mode (delete-dups (delq nil (append options default-options)))))) 

(setq my/magit-default-options 
     `(
     (pulling "--rebase") 
     )) 

(advice-add 'magit-key-mode :filter-args #'magit-key-mode--add-default-options) 

Lưu ý: Điều này cần được chỉnh sửa cho doublep's answer, nhưng chiến thắng 3 out-of-4 đã từ chối chỉnh sửa. Không một ai trong số họ thậm chí còn chạm vào Emacs.SE, cũng như họ không đề cập đến Emacs hay Lisp trên hồ sơ SO hoặc LinkedIn của họ. Rõ ràng, những người không biết ngôn ngữ được đề cập sẽ không được ưu đãi với sức mạnh từ chối chỉnh sửa.

Tôi đến đây tìm kiếm câu trả lời cho câu hỏi này, tìm câu trả lời của doublep, cải thiện nó bằng cách làm cho mã rõ ràng hơn và có thể mở rộng được. bởi những người thậm chí không biết họ đang làm gì. Mỗi lần điều này xảy ra (và, cho đến nay, nó đã xảy ra mọi lúc), tôi tự hỏi tại sao tôi lại lãng phí thời gian của mình để đóng góp cho trang web này.

Các vấn đề liên quan