2010-01-06 29 views
56

Tôi thích sử dụng git diff --color-words nhìn thấy rõ ràng những từ mà đã thay đổi trong một tập tin:màu Git diff sang HTML

Screenshot

Tuy nhiên tôi muốn chia sẻ rằng diff với một ai đó mà không git hoặc một thiết bị đầu cuối màu cho điều đó vấn đề. Vì vậy, có ai biết về một công cụ hoặc thủ thuật có thể chuyển đổi đầu ra đầu ra thoát màu màu vào HTML?

Trả lời

77
wget "http://www.pixelbeat.org/scripts/ansi2html.sh" -O /tmp/ansi2html.sh 
chmod +x /tmp/ansi2html.sh 
git diff --color-words --no-index orig.txt edited.txt | \ 
/tmp/ansi2html.sh > 2beshared.html 

Những gì tôi thực sự cần là một ANSI sang HTML Chuyển đổi. Và tôi đã tìm thấy một cái rất phong nha trên http://www.pixelbeat.org/.

LƯU Ý: Bạn có thể không nhìn thấy bất kỳ màu nào trừ khi bạn bao gồm --color hoặc --color-words, có thể do đường ống gây ra git diff để loại trừ màu sắc.

CHÚ Ý 2: Bạn có thể cần cài đặt gnu sed và awk, đặc biệt nếu bạn đang sử dụng máy Mac. Làm như vậy với brew install gnu-sed gawk. Bạn cũng có thể cần thêm chúng vào đường dẫn của mình theo cách thủ công, ví dụ: với ln -s /usr/local/Cellar/gnu-sed/4.2.2/bin/gsed /usr/local/bin/.

+9

Rất vui khi bạn thích :) Bạn có thể thấy một số ví dụ sử dụng ở đây: http://www.pixelbeat.org/docs/terminal_colours/ – pixelbeat

+0

Hai câu hỏi trùng lặp khác, được trả lời bằng cách sử dụng mô-đun HTML :: FromANSI Perl trên CPAN: http://stackoverflow.com/questions/1425738/how-can-i-convert-the-output-of-git-diff-color-words-to-html, http://stackoverflow.com/questions/245121/ a-library-to-convert-ansi-escapes-thiết bị đầu cuối-định dạng-màu-mã-thành-html –

+1

Tôi đã tìm kiếm, trong nhiều ngày, cho một cái gì đó như thế này để tạo ra sự khác biệt LaTex tự động. Đây là tìm kiếm tốt nhất của tôi trong tuần. Cảm ơn! – Winterstream

3

Không biết bất kỳ công cụ nào để thực hiện chính xác những gì bạn muốn. Nhưng đây là một đoạn mã tôi thường sử dụng để xuất ra định dạng có màu html khác: simplediff

Nó có sẵn trong PHP và Python. Đầu ra gắn thẻ sự khác biệt bằng cách sử dụng các thẻ <del><ins> để bạn có thể dễ dàng tô màu chúng bằng cách sử dụng CSS.

+0

Thật đáng tiếc khi không có một trình bao bọc đơn giản xung quanh sự khác biệt đơn giản để tạo các khác biệt màu (cả html hoặc trong thiết bị đầu cuối). –

11

tải diff2html, giải nén nó và chuyển đổi diff html với lệnh này:

$ diff2html file1.txt file2.txt > diff-demo1.htm 

Có nhiều ... hãy nhìn vào this câu hỏi.

Hoặc sau gitting:

git diff --color-words --no-index orig.txt /tmp/edited.txt > myfile 

tải cả ansifilter từ this địa điểm. và sử dụng lệnh này để chuyển đổi sang định dạng html myfile

ansifilter -i myfile -H -o myfile2.html 

như vậy ... đây là chính xác những gì bạn muốn;)

+3

http://www.flickr.com/photos/hendry/4250699527/ Tôi không chấp nhận 'diff2html' vì có vẻ AWFUL. – hendry

+0

những gì về điều này -> http://kafka.fr.free.fr/diff2html/diff-demo2.html –

+0

Điều đó có vẻ khủng khiếp quá. Tôi muốn nó trông giống như ảnh chụp màn hình đầu cuối của tôi ở trên. – hendry

1

Tôi đã tạo tập lệnh perl để tạo bảng html cho git diff. Để sử dụng kịch bản này trước tiên bạn phải thu thập diff bằng cách sử dụng git diff sha1s ...> diff.file, sau đó chạy diff2html.pl diff.file. Lượt truy cập:

http://kernel-demystified.com/forum/index.php/topic,23.msg28.html#new

+0

'Không thể xác định địa chỉ IP từ tên máy chủ kernel-demystified.com' – ArcherGodson

2

Nếu bạn muốn xem diffs sạch với dòng tương đồng phù hợp với, tốt hơn từ so sánh, cú pháp nổi bật và nhiều hơn nữa kiểm tra diff2html mà là rất tùy git khác với người trình bày HTML.

Để sử dụng nó trên dòng lệnh, bạn có thể kiểm tra diff2html-cli là một CLI đơn giản được viết bằng Node.js.

Vì vậy, bạn có thể chia sẻ sự khác biệt của mình với đồng nghiệp mà nó tích hợp với diffy.org.

Khám phá mẫu khác here.

+0

Cảm ơn, đó là một công cụ tuyệt vời. Nó sẽ được tốt đẹp nếu nó sẽ được thêm hỗ trợ cho diffs được thực hiện trong Windows (sau khi --- và +++ dòng đường dẫn được trích dẫn). – Zsolti

1

Bạn có thể muốn thanh toán dự án github rmed, cung cấp công cụ dòng lệnh, tạo ra các diff html có thể chia sẻ tĩnh bằng cách sử dụng vimdiff.

0

khi tôi sử dụng git bash, nếu bạn sử dụng git show, bạn chỉ cần sao chép và dán nội dung được hiển thị trong bảng điều khiển và nó sao chép chính xác màu.

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