Diff
Quá trình phát hiện và hiển thị sự khác biệt giữa hai văn bản. Công nghệ nền tảng cho quản lý phiên bản và đánh giá mã.
Diff là quá trình so sánh hai tệp văn bản hoặc tập dữ liệu để phát hiện và hiển thị các phần được thêm, xóa và sửa đổi. Ra đời dưới dạng lệnh diff Unix vào những năm 1970, nó đã trở thành công nghệ nền tảng không thể thiếu trong phát triển phần mềm. Ngày nay nó cung cấp sức mạnh cho cốt lõi của các hệ thống quản lý phiên bản như Git, SVN và Mercurial, và được sử dụng rộng rãi trong đánh giá mã và tự động hóa triển khai.
Có nhiều thuật toán diff. Cơ bản nhất là thuật toán Myers, tìm khoảng cách chỉnh sửa tối thiểu (diff có ít tổng số thêm và xóa nhất) và là mặc định của Git. Patience diff ưu tiên khớp các dòng duy nhất, tạo đầu ra dễ đọc hơn cho các thay đổi cấu trúc mã. Histogram diff là cải tiến của patience diff hoạt động tốt ngay cả trên tệp lớn. Hướng dẫn thực hành Git bao gồm cách sử dụng diff rộng rãi.
Đầu ra diff có nhiều định dạng. Định dạng unified diff đánh dấu dòng thêm bằng + và dòng xóa bằng -, bao gồm một số dòng ngữ cảnh xung quanh thay đổi. Các chế độ xem diff trong pull request GitHub và GitLab dựa trên định dạng này. Side-by-side diff hiển thị phiên bản trước và sau trong các cột song song, giúp dễ dàng nắm bắt trực quan các thay đổi.
Trong thực tế, diff được sử dụng vượt xa đánh giá mã. Nó theo dõi thay đổi tệp cấu hình, quản lý phiên bản tài liệu, phát hiện sửa đổi lược đồ cơ sở dữ liệu, và thậm chí quản lý lịch sử sửa đổi tài liệu pháp lý. Trong pipeline CI/CD, kết quả diff đôi khi được sử dụng cho "phân tích tác động" để thu hẹp mục tiêu kiểm thử.
Một khái niệm thường bị nhầm lẫn với diff là patch. Trong khi diff là "kết quả phát hiện sự khác biệt", patch là "tập lệnh để áp dụng những khác biệt đó". Quy trình Unix truyền thống tạo diff bằng lệnh diff và áp dụng bằng patch vẫn được sử dụng trong danh sách gửi thư dự án mã nguồn mở ngày nay. Sách thuật toán văn bản cung cấp thêm ngữ cảnh.
Từ góc độ đếm ký tự, đầu ra diff bao gồm siêu dữ liệu (số dòng, dấu thay đổi, đường dẫn tệp, tiêu đề hunk) ngoài văn bản gốc, vì vậy số ký tự đầu ra diff vượt quá bản gốc. Word diff có thể phát hiện thay đổi ở cấp từ hoặc ký tự thay vì cấp dòng, hữu ích cho theo dõi chỉnh sửa trong viết văn xuôi và sửa đổi bản sao quảng cáo.