2013-02-22 16 views
7

Phiên bản git khách hàng của tôi là 1.7.0.4.git add Đã đăng xuất off-by-line bằng cách sử dụng định dạng.signoff không hoạt động

Tôi muốn tự động thêm dòng "Đã đăng xuất-by-by" cho người gửi ở cuối thông báo nhật ký cam kết khi cam kết một tin nhắn.

  1. Khi tôi đặt git config --global format.signoff true, và chạy git commit -m "modify something", tôi thấy không có "Signed-off-by" trong git log.
  2. Nếu tôi sử dụng git commit -m -s "modify something", thì "Đã ký tắt" sẽ hiển thị trong git log.

Có ai giúp được không?

+0

có ai biết không? – Venus

Trả lời

4

Cập nhật cho Git 2.14.x/2.15: như tôi đã đề cập trong "Git - Detect if commit is signed off programmatically", bạn sẽ có thể phân tích đoạn giới thiệu thư cam kết cho dòng Signed-off-By.

"git interpret-trailers" đã được dạy một "--parse" và một vài tùy chọn khác để làm cho nó dễ dàng hơn cho các kịch bản để lấy dòng Trailer hiện tại từ một cam kết thông báo đăng nhập.

Xem stefanct 's answer cho commit-msg client-side hook mà sẽ sử dụng git interpret-trailers.


câu trả lời gốc (2013)

format.signoffabout patch (như minh họa, ví dụ, in this patch):

format.signoff 

Một giá trị boolean cho phép bạn kích hoạt -s/- tùy chọn-đăng xuất của format-patch theo mặc định

Nó không có vòng bi trên git commit -s.

Nói cách khác, bạn không phải đăng xuất mọi cam kết, nhưng khi bạn xuất bản chúng dưới dạng bản vá cho người khác sử dụng (như trong "git: submitting patches"), thì bạn nên ký tên.

Để có chữ ký chính xác của Signed-of-by, hãy xem "What is the Sign Off feature in Git for?".

7

Bạn có thể signoff theo mặc định trong một dự án bằng cách tạo ra một tập tin (nói "~/myproject/git-mẫu") có chứa một số dòng trống và ký-off-by văn bản như thế này:

Signed-off-by: Your Name <[email protected]> 

Sau đó cấu hình git để sử dụng nó làm mẫu cam kết. Ví dụ:

git config commit.template ~/MYPROJECT/git-template 

Hãy chắc chắn rằng dự án của bạn tài liệu phương tiện ở đâu đó những gì đã ký-off-by cho dự án. Dưới đây là một số văn bản bạn có thể sao chép vào đóng góp của bạn.md file:

Tất cả các đóng góp (bao gồm cả yêu cầu kéo) phải đồng ý với Giấy chứng nhận xuất xứ (DCO) phiên bản 1.1. Đây là chính xác cùng một được tạo ra và được sử dụng bởi các nhà phát triển hạt nhân Linux và được đăng trên http://developercertificate.org/. Đây là chứng nhận của nhà phát triển rằng họ có quyền gửi bản vá để đưa vào dự án. Chỉ cần gửi đóng góp ngụ ý thỏa thuận này, tuy nhiên, vui lòng bao gồm thẻ "Đã ký bởi" trong mọi bản vá (thẻ này là cách thông thường để xác nhận rằng bạn đồng ý với DCO).

3

Hiện tại, có một cách dễ dàng để tự động đăng xuất bất kỳ cam kết nào chưa được ký kết bằng cách sử dụng móc và lệnh git-interpret-trailers. Trong phiên bản sắp tới 2.15 của lệnh git, lệnh này cho phép kiểm tra thường xuyên một dấu hiệu hiện có (bất kể giá trị/tác giả của nó là gì) và thêm vào của bạn nếu chưa có. Kể từ tháng 10 năm 2017, mã bắt buộc là không phải trong bất kỳ bản phát hành git nào (nhưng trong chi nhánh master)!

Lưu các mục sau là .git/hooks/prepare-commit-msg hoặc .git/hooks/commit-msg (xem here để biết sự khác biệt) và làm cho tệp thực thi.

#!/bin/sh 

NAME=$(git config user.name) 
EMAIL=$(git config user.email) 

if [ -z "$NAME" ]; then 
    echo "empty git config user.name" 
    exit 1 
fi 

if [ -z "$EMAIL" ]; then 
    echo "empty git config user.email" 
    exit 1 
fi 

git interpret-trailers --if-exists doNothing --trailer \ 
    "Signed-off-by: $NAME <$EMAIL>" \ 
    --in-place "$1" 
+0

Được thực hiện tốt. +1. Tôi tham khảo câu trả lời của bạn trong tôi để có nhiều khả năng hiển thị hơn và tham khảo https://stackoverflow.com/a/41361273/6309 nơi tôi đã đề cập đến 'git interpret-trailers'. – VonC

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