2010-08-04 28 views
12

Khi xem một diff sử dụng git diff, mỗi thay đổi bắt đầu với dòng như:tiêu đề Tuỳ chỉnh trong git diff

@@ -28,41 +20,10 @@ namespace ConsoleApplication1 

Đối với C, phần cuối cùng là khá mô tả - nó cho thấy ví dụ như chức năng, trong đó sự thay đổi xảy ra . Nhưng đối với C#, nó chỉ bao giờ cho thấy không gian tên, mà không phải là rất hữu ích. Tôi nghĩ đó là bởi vì nó cho thấy dòng cuối cùng không bị thụt vào. Có cách nào để cấu hình này?

+0

bạn có quản lý để có cấu hình tốt không? Tôi đã thử * .cs diff = csharp, nhưng tôi vẫn nhận được không gian tên. diff = java hoạt động tốt hơn mặc dù .. – elmarco

+0

Vâng, nó hoạt động với tôi, bạn có phiên bản git đủ gần đây không? diff = csharp nên hoạt động từ 1.7.3. – svick

+0

1.7.10 ở đây, từ debian không ổn định, tôi sẽ cố gắng đào sau, bây giờ java là ok :) – elmarco

Trả lời

16

tôi đã tìm thấy nó, dòng được gọi là tiêu đề hunk và the documentation nói làm thế nào để tùy chỉnh nó:

Xác định một tùy chỉnh hunk-header

Mỗi nhóm thay đổi (gọi là "hunk") trong đầu ra diff văn bản được đặt trước bằng một dòng của biểu mẫu:

@@ -k,l +n,m @@ TEXT 

Đây được gọi là tiêu đề thư mục. Phần "TEXT" theo mặc định là một dòng bắt đầu bằng bảng chữ cái, dấu gạch dưới hoặc ký hiệu đô la; điều này khớp với những gì GNU diff -p sử dụng đầu ra. Tuy nhiên, lựa chọn mặc định này không phù hợp với một số nội dung và bạn có thể sử dụng mẫu tùy chỉnh để thực hiện lựa chọn.

Đầu tiên, trong .gitattributes, bạn sẽ gán thuộc tính diff cho đường dẫn.

*.tex diff=tex 

Sau đó, bạn sẽ xác định cụm từ thông dụng khớp với dòng mà bạn muốn xuất hiện dưới dạng tiêu đề thư mục "TEXT". Thêm một phần vào tệp $GIT_DIR/config của bạn (hoặc $HOME/.gitconfig tệp) như sau:

[diff "tex"] 
     xfuncname = "^(\\\\(sub)*section\\{.*)$" 

Lưu ý. Một mức độ duy nhất của dấu gạch chéo ngược được ăn bởi trình phân tích tệp cấu hình, vì vậy bạn sẽ cần phải tăng gấp đôi dấu gạch chéo ngược; mẫu phía trên chọn một dòng bắt đầu bằng dấu gạch chéo ngược, và số lần xuất hiện số không nhiều hoặc nhiều hơn theo sau bởi phần tiếp theo là dấu ngoặc mở, đến cuối dòng.

3

Xem gitattributes manpage, phần "Tạo văn bản khác" và ví dụ: Cấu hình diff.csharp.xfuncname (tìm kiếm xfuncname).