2015-04-24 13 views
14

Đây là kết quả của tôi cam/thay đổi mới nhất trong Git ...Tại sao Gerrit hiển thị một số thay đổi khác với git?

enter image description here

... và trong Gerrit:

enter image description here

Có bất kỳ lời giải thích cho sự khác biệt về số lượng số dòng được thêm và xóa? Thuật toán khác nhau?

+0

Gerrit không được hiển thị số khác. Bạn có thể liên kết với thay đổi về gerrit được không? – Mureinik

+5

'Gerrit' sử dụng' jgit'. Có sẵn một nhị phân 'jgit'. Hãy thử chạy 'jgit show' trên commit của bạn và kiểm tra nếu diffs được tạo ra bởi' jgit' và 'git' là khác nhau. Tôi nhớ tôi đã gặp phải một tình huống tương tự. –

+0

IS này trước hoặc sau khi gửi? Có một sự tái xuất và/hoặc hợp nhất (vô hình) xảy ra không? – kdopen

Trả lời

0

Nếu bạn đã đẩy nhiều lần thì đó là vì phiên bản tham chiếu của bạn chống lại một cái gì đó khác với cam kết cơ sở trong thay đổi.

0

Mỗi git cam kết chỉ cho toàn bộ ảnh chụp git tree (giúp kiểm tra hoặc phân biệt bất kỳ sửa đổi nào trong thời gian rất nhanh và liên tục). Git không lưu trữ các bản vá bên trong, chúng được tính theo yêu cầu khi được yêu cầu như khi các số liệu thống kê cam kết được tính toán.

git diff là lệnh chính để tính toán chúng và xử lý một số thuật toán khác (xem ít nhất là --diff-algorithm). Ngoài ra git configuration có thể đặt các hành vi khác biệt mặc định cụ thể (xem diff.dirstatdiff.algorithm cấu hình).

Nếu cả hai công cụ/máy tính tính thống kê khác với các cài đặt khác nhau thì bạn có thể nhận được các thống kê khác nhau ở cuối. (Tôi không biết nếu đây là trường hợp)

0

Thay đổi thực tế là như nhau. Nhưng sự khác biệt là do GIT và GERRIT tính toán số lượng các dòng đã thay đổi như thế nào. Giả sử bạn có 4 phiên bản/thay đổi/bản vá của cam kết trên đầu trang của HEAD.

commit_patchset # 4
commit_patchset # 3
commit_patchset # 2
commit_patchset # 1
ĐẦU

Git:
Số dòng thay đổi cho cam # 4 (A1): diff giữa commit_patchset # 4 và commit_patch # 3
Số dòng thay đổi cho cam kết số 3 (B1): khác biệt giữa commit_patchset # 3 và commit_patch # 2
Num ber dòng thay đổi cho cam # 2 (C1): diff giữa commit_patchset # 2 và commit_patch # 1
Số dòng thay đổi cho cam # 1 (D1): diff giữa commit_patchset # 1 và ĐẦU

Gerrit:
Số dòng thay đổi cho cam kết # 4 (A2): khác biệt giữa commit_patchset # 4 và BASE/HEAD
Số dòng thay đổi cho cam kết # 3 (B2): khác nhau giữa commit_patchset # 3 và BASE/HEAD
Số lượng dòng thay đổi cho cam kết # 2 (C2): khác biệt giữa commit_patchset # 2 và BASE/HEAD
Số dòng thay đổi cho cam kết # 1 (D2): khác biệt giữa commit_patchset # 1 và BASE/HEAD

Vì vậy, luôn luôn số lượng các dòng thay đổi sẽ khác nhau.

Bạn có thể yêu cầu Gerrit hiển thị sự khác biệt chính xác (như GIT hiển thị) giữa phiên bản bản vá thay vì BASE/HEAD bằng cách sử dụng tùy chọn "..".
Ví dụ:
http://your_gerrit_url/your_change_id/4..3 cung cấp cho bạn các đường chính xác được thay đổi giữa commit_patchset # 4 và commit_patchset # 3. Điều này phải khớp với các phép tính GIT.

Hy vọng điều đó sẽ hữu ích.

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