Darcs – Wikipedia

Darcs là một hệ thống kiểm soát phiên bản phân tán được tạo bởi David Roundy. Các tính năng chính bao gồm khả năng chọn thay đổi để chấp nhận từ các kho lưu trữ khác, tương tác với các kho lưu trữ cục bộ (trên đĩa) khác hoặc các kho lưu trữ từ xa thông qua SSH, HTTP hoặc email và giao diện tương tác bất thường. Các nhà phát triển cũng nhấn mạnh việc sử dụng các công cụ phần mềm tiên tiến để xác minh tính chính xác: hệ thống loại biểu cảm của ngôn ngữ lập trình chức năng Haskell thực thi một số thuộc tính và thử nghiệm ngẫu nhiên thông qua QuickCheck xác minh nhiều tính năng khác. Tên này là từ viết tắt đệ quy cho Hệ thống kiểm soát sửa đổi nâng cao Darcs . [3]

Darcs coi các bản vá là công dân hạng nhất. Đối với người dùng, kho lưu trữ có thể được xem là một tập hợp các bản vá, trong đó mỗi bản vá không nhất thiết phải được đặt hàng đối với các bản vá khác, tức là bộ bản vá chỉ là một bộ được đặt hàng một phần. Trong nhiều trường hợp, các bản vá có thể được truyền độc lập giữa các kho khác nhau.

Nhiều hoạt động phân nhánh, hợp nhất và chọn anh đào sẽ yêu cầu các lệnh bổ sung với các hệ thống dựa trên ảnh chụp nhanh như Git hoặc Mercurial có thể được thực hiện trực tiếp với Darcs bằng các lệnh "kéo" và "đẩy" thông thường. Về giao diện người dùng, điều này có nghĩa là Darcs có ít lệnh hơn. Các lệnh này tương tác nhiều hơn: người ta có thể chọn chính xác hơn các bản vá mà họ muốn trao đổi với các kho lưu trữ từ xa.

Các bản vá của kho lưu trữ được sắp xếp tuyến tính. Darcs tự động tính toán xem các bản vá có thể được sắp xếp lại hay không (một thao tác được gọi là giao hoán) và cách thực hiện. Những tính toán này thực hiện cái gọi là "lý thuyết vá".

Một bản vá Darcs có thể chứa các thay đổi của các loại sau:

  • thay đổi dòng,
  • tạo và xóa thư mục và xóa thư mục,
  • di chuyển tệp và thư mục,
  • thay thế từ (thường được sử dụng trong tái cấu trúc mã, ví dụ đổi tên tất cả các lần xuất hiện của "foo" thành "bar" trong một tập tin nhất định).

Khái niệm phụ thuộc giữa các bản vá được định nghĩa theo cú pháp. Theo trực giác, một bản vá B phụ thuộc vào bản vá khác A if A cung cấp nội dung mà B sửa đổi. Điều này có nghĩa là các bản vá sửa đổi các phần khác nhau của mã được xem xét, theo mặc định, độc lập. Để giải quyết các trường hợp khi điều này là không mong muốn, Darcs cho phép người dùng chỉ định các phụ thuộc rõ ràng giữa các bản vá.

Kể từ phiên bản 2.10, Darcs sử dụng diff kiên nhẫn theo mặc định.

Lịch sử [ chỉnh sửa ]

Darcs đã phát triển từ những nỗ lực của David Roundy để thiết kế định dạng bản vá mới cho vòm GNU vào tháng 6 năm 2002. Những cuộc thảo luận này không dẫn đến bất kỳ mã nào được cam kết với Arch, nhưng đã dẫn đến quan niệm về lý thuyết của các bản vá. Sau khi viết phiên bản ban đầu của Darcs bằng C ++, phiên bản Haskell đã được viết vào mùa thu năm 2002 và phát hành ra công chúng vào tháng 4 năm 2003. Darcs 2.0 được phát hành vào tháng 4 năm 2008 và giới thiệu một định dạng kho lưu trữ mạnh mẽ hơn, cũng như một ngữ nghĩa bản vá mới được gọi là "darcs-2", nhằm giảm thiểu các vấn đề hợp nhất theo cấp số nhân. [4] Chiến lược phát triển hiện tại tập trung vào việc thực hiện tối ưu hóa và thêm các tính năng mới, trong khi vẫn duy trì cùng định dạng kho lưu trữ.

Thiếu sót [ chỉnh sửa ]

Darcs đã bị chỉ trích vì lý do hiệu suất. [5][6] Một trong những vấn đề đáng chú ý nhất là liên quan đến thuật toán hợp nhất trong Darcs 1.x, mà có thể làm công việc theo cấp số nhân để hợp nhất một số xung đột. Mặc dù vấn đề không được khắc phục hoàn toàn trong Darcs 2, [7] tần suất hợp nhất theo cấp số nhân đã giảm. Lỗi vẫn còn trong đó việc hợp nhất các xung đột đệ quy thất bại. [8]

Xem thêm [ chỉnh sửa ]

Tài liệu tham khảo [ chỉnh sửa ] ] a b "Thay đổi cho darcs". Tấn công . Đã truy xuất 2018-06-24 .
  • ^ Roundy, David (2008-10-21), "thích viết tắt đệ quy hơn là xấu hổ", Darcs (Cam kết) , Darcs Hub .
  • ^ "Hai", Darcs
  • ^ Marlow, Simon (ngày 7 tháng 3 năm 2007), "Tình trạng hiện tại của Darcs", Darcs người dùng (danh sách gửi thư), OSUOSL .
  • ^ Fendt, Robert (ngày 9 tháng 1 năm 2009), "Làm tròn DVCS: Một hệ thống để cai trị tất cả?", Nhà phát triển Mạng 1 Linux Foundation, được lưu trữ từ bản gốc vào ngày 2009 / 02-28 .
  • ^ "Xung độtFAQ", Wiki Darcs .
  • ^ "Sự cố 1520 Mẫu không thể sửa được không thành công cho mẫu Data.Maybe.Just a2", Bug Tracker Darcs .
  • chỉnh sửa ]