Điều trị theo lý thuyết của diffs, patch và sáp nhập?


14

Có một danh mục các bản vá trông giống như thế này:

  • Các đối tượng là các chuỗi trong một số bảng chữ cái cơ sở
  • Các hình thái là các tập lệnh chỉnh sửa ("diffs" hoặc "patch") giữa các chuỗi

Tôi quan tâm đến những câu hỏi này:

  • Có một khái niệm phân loại của kịch bản chỉnh sửa tối thiểu ? Có lẽ danh mục các bản vá được làm phong phú trong PO-Sets?
  • Là sự hợp nhất của các bản vá đẩy ra phân loại?
  • Làm thế nào để khái quát điều này từ chuỗi sang cây (một hệ thống tệp hoặc kiểu dữ liệu đại số)?

1
Bạn sẽ muốn có một cái nhìn về lý thuyết đằng sau Darcs VCS
Bergi

1
... Hoặc Pijul , một nỗ lực tương đối gần đây để tạo ra một "Darcs mới hơn". (Và theo như tôi nhớ từ cuộc nói chuyện đó, sáp nhập là sự thúc đẩy trong "hoàn thành miễn phí" của danh mục khác biệt ...).
phipsgabler

Câu trả lời:


15

Như Martin chỉ ra , có một số công việc về đại diện phân loại của các bản vá. "Một lý thuyết phân loại các bản vá lỗi" của Mimram và Di Giusto là cách tiếp cận phân loại rộng rãi nhất để chỉnh sửa các tập lệnh như được sử dụng bởi UNIX diff.

LA:[n]L[n]nA:[n]LB:[m]Lf:[n][m]. Tiêm và tăng đang có để chỉ ra rằng các bản sao không bao giờ vượt qua nhau. Bạn có thể tìm thấy tất cả các chi tiết trên giấy .

Có, sáp nhập được coi là sự thúc đẩy trong việc hoàn thành miễn phí của thể loại trên. Chúng tôi cần cocompletion để đảm bảo chúng tôi thêm xung đột hợp nhất vào công trình của chúng tôi. Nó không phải là trường hợp hợp nhất luôn tồn tại.

Vào câu hỏi thứ hai của bạn, không có khái niệm phân loại về kịch bản chỉnh sửa tối thiểu vì hai lý do chính.

  1. Chỉnh sửa-script đến trong tất cả các hình dạng và hình thức. Một số tác giả xem xét chèn, xóa và sao chép, một số tác giả muốn thêm thay thế như là một hoạt động quá. Khi bạn khái quát hóa từ chuỗi sang cây, sau đó, rất nhiều hoạt động khác trở nên khả thi.

  2. abba

Đã có rất nhiều công việc về khái quát hóa các kịch bản chỉnh sửa thành cây. Điều này đã được chia thành hai cơ quan chính của công việc:

  • Cây không được chăm sóc : Chỉ nghĩ về biểu thức s. Khoảng cách chỉnh sửa cây giữa hai cây là khoảng cách chỉnh sửa chuỗi giữa các lần đặt hàng trước của các cây đã nói. Bạn có thể kiểm tra một số thư mục của Demaine et al. hoặc ví dụ như Pawlik và Augsten .

  • Cây được gõ : Các bản vá trên các Cú pháp Tóm tắt được đảm bảo để bảo vệ tính đánh máy tốt của đối tượng, nghĩa là, áp dụng một bản vá sẽ luôn mang lại AST hợp lệ. Dưới chiếc ô được gõ, có ít thao tác chỉnh sửa hơn người ta có thể xem xét. Thay thế, ví dụ, không có ý nghĩa. Tuy nhiên, có tồn tại một sự khác biệt so với giao dịch đặt hàng trước của cây bởi Lempsink et al. , mà sau đó đã được mở rộng bởi Vassena . Tôi hiện đang tập trung vào các phương pháp tiếp cận bản thân với các kịch bản chỉnh sửa cho các vấn đề mà tôi đã chỉ ra trước đó, chẳng hạn như công việc mới nhất của chúng tôi hoặc một số công việc trước đó cố gắng tận dụng cấu trúc của loại giá trị được "vá".

Trong một trong những trường hợp đó, tôi đã không thấy một cách giải thích phân loại cẩn thận về các mảng cấu trúc cây.


Câu trả lời tuyệt vời! Nhưng tại sao không có khái niệm phân loại các tập lệnh chỉnh sửa tối thiểu chỉ vì chúng không phải là duy nhất? (Co) giới hạn không phải là duy nhất, chỉ tối đa là đẳng cấu.
Turion

Tôi đoán rằng chúng ta có thể thực hiện cocompletion và bao gồm các xung đột, hoặc chỉ nói rằng các đợt đẩy không phải luôn tồn tại và khi chúng không tồn tại thì không có sự hợp nhất?
Turion

1
ABdiffABdiff3

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.