2012-01-12 21 views
12

Tôi đang tạo trình điều khiển hợp nhất. Tôi đã xác định một tập tin .gitattributes như sau:Thêm trình điều khiển kết hợp git vào kho lưu trữ?

filename merge=mergeStrategy

Tôi đã tạo ra người lái xe merge trong $ DỰ ÁN/.git/config như sau:

[merge "mergeStrategy"] 
    name = My merge strategy 
    driver = scripts/mergeScript.sh 

này hoạt động tốt tại địa phương, nhưng tôi muốn cam kết trình điều khiển hợp nhất này vào kho git để chiến lược hợp nhất có hiệu lực cho mọi người.

Có cách nào tôi có thể thêm tùy chọn này (hoặc các tùy chọn cấu hình Git khác) vào chính kho lưu trữ không?

Trả lời

9

Bạn chỉ có thể thêm và cam kết (và đẩy) script/mergeScript (cùng với các tập tin .gitattributes, tất nhiên)

Điều đó sẽ làm việc càng lâu càng:

  • mergeScript là bằng cách nào đó trong $PATH của người dùng thực thi trình điều khiển hợp nhất.
  • mergeScript là thực thi, chmod +x
  • mergeScript là không có phần mở rộng, để cho phép bạn sau thay đổi nội dung của nó (từ một vỏ bash để một kịch bản Perl để một C thực thi để ...) nếu cần thiết.

(Cảm ơn bạn, MestreLion, cho hai điểm cuối cùng, khi ông đề cập chúng trong bình luận)

Đó là trường hợp của bạn tại địa phương, như tôi nghi ngờ rằng '.' là ở bạn $PATH, nhưng bạn không thể giả định rằng cho tất cả mọi người.

Tuy nhiên, các tập tin cấu hình địa phương (.git/config) sẽ không được đẩy/nhân bản (như Alexandr Priymak điểm ra trong bình luận), vì vậy người dùng vẫn cần phải lặp lại việc kê khai của các tùy chỉnh kết hợp tài xế.
Đây là một biện pháp an toàn cơ bản, để bạn không được đẩy tập lệnh "có hại" tiềm ẩn mà sau đó sẽ được thực thi tự động tại lần hợp nhất tiếp theo.

+1

Điều này không lưu cài đặt cấu hình trong kho git. –

+0

@AlexandrPriymak: điểm tốt. Tôi đã thêm vào điều quan trọng trước câu trả lời. – VonC

+1

Đừng quên đặt 'mergeScript.sh' là có thể thực thi bằng cách sử dụng' chmod + x', nếu không nó có thể (wont?) Hoạt động. Tôi cũng ** đề nghị bạn ** không ** sử dụng các phần mở rộng cho các tập tin thực thi. Đặt tên nó đơn giản là 'mergeScript', như trong tương lai nó có thể thay đổi từ kịch bản lệnh shell thành perl, python hoặc thậm chí là biên dịch C thực thi. – MestreLion

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