Magit + gerrit - đẩy sang chi nhánh khác


7

Tôi đang sử dụng gerrit. Khi tôi muốn thực hiện các cam kết của mình, tôi sử dụng lệnh sau:

git push origin HEAD:refs/for/master

Làm thế nào tôi có thể tạo lại cùng một lệnh bằng cách sử dụng Magit?

Câu trả lời:


6

Sau một thời gian, tôi đã có đủ thời gian để cố gắng tự sửa nó.

Tôi không biết bất kỳ cách "ngoài luồng" nào để làm điều này; tuy nhiên, bạn có thể mở rộng magit để phù hợp với nhu cầu của bạn.

Đầu tiên, tôi đã viết một chức năng sẽ đẩy đến gerrit:

(defun magit-push-to-gerrit ()
  (interactive)
  (magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))

Tiếp theo, tôi đã thêm nó vào menu đẩy:

(transient-append-suffix 'magit-push "p"
  '("m" "Push to gerrit" magit-push-to-gerrit))

Hai hình thức này là trong tập tin init của tôi.

Và đó là nó! Bây giờ tôi có thể sử dụng P mđể đẩy để gerrit.

Cập nhật : Nếu bạn muốn đẩy một cam kết cụ thể chứ không phải CHÍNH, bạn có thể sử dụng chức năng này (cũng được cập nhật với magit-git-lệnh-topdir như được đề cập trong bình luận):

(defun magit-push-to-gerrit (source)
  "Push an arbitrary branch or commit to gerrit. The source is read in the minibuffer."
  (interactive
   (let ((source (magit-read-local-branch-or-commit "Push")))
     (list source)))
  (magit-git-command-topdir (concat "git push origin " source ":refs/for/master")))

2
Nếu sử dụng Magit cập nhật, bạn sẽ gặp lỗi khi chạy (magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)). Bạn sẽ muốn sử dụng (magit-git-command-topdir "git push origin HEAD:refs/for/master")thay thế.
dùng30747

Từ magit-obsolete.el: * If you add additional arguments and/or actions to Magit's popups, then you have to port that to modify the new \"transients\" instead.Xem github.com/magit/magit/wiki/ từ
dùng30747

3

Sử dụng !để sử dụng lệnh git chung, sau đó bạn có thể viết đơn giản: push origin HEAD:refs/for/mastergần như bình thường.

Ngoài ra còn có một gói dành riêng cho gerritđây: https://github.com/terranpro/magit-gerrit Tuy nhiên tôi chưa sử dụng nó một cách cá nhân, vì vậy không biết chính xác cách sử dụng nó.

BIÊN TẬP

Trong một phiên bản gần đây magit, giờ đây có thể chỉ định một refspec rõ ràng từ rtiểu ban. Vì vậy, để đẩy tới gerritrefspec, chỉ cần sử dụng:

P r"nguồn gốc" RET"ĐẦU: refs / for / master"

Mặc dù, đây không phải thực sự là một phím tắt vì bạn phải làm nhiều hơn key-ép, nhưng nó hiện có sẵn hộp.


Làm thế nào về một số phím tắt? :)
MatthewRock

Sợ tôi không biết bất kỳ phím tắt cụ thể. Tôi đã chỉ thử một cách thông thường git push 'elsewhere'nhưng điều đó đặt trước 'refs / Heads /' cho điểm đến chi nhánh, do đó dường như không hoạt động gerrit.
Xaldew
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.