다르크

Darcs
다르크
darcs logo
원저작자데이비드 라운디
개발자기욤 호프만 등
초기 릴리즈2003년 3월 3일, 19년 전(2003-03-03)[1]
안정된 릴리스
2.16.5 / 2022년 2월 20일; 5개월 전(2022-02-20)[2]
저장소
기입처하스켈
운영 체제Unix, Linux, BSD, Apple macOS, MS Windows
유형버전 관리
면허증.GPL-2.0 이후
웹 사이트darcs.net Edit this on Wikidata

Darcs는 David Roundy가 개발한 분산 버전 관리 시스템입니다.주요 기능으로는 다른 저장소의 변경 사항을 선택할 수 있는 기능, SSH, HTTP 또는 이메일을 통한 다른 로컬(온디스크) 저장소 또는 원격 저장소와의 상호 작용, 비정상적으로 인터랙티브한 인터페이스 등이 있습니다.개발자들은 또한 정확성을 검증하기 위한 고급 소프트웨어 도구의 사용을 강조합니다. 기능 프로그래밍 언어 Haskell표현형 시스템은 몇 가지 속성을 적용하고 QuickCheck를 통한 무작위 테스트는 다른 [3]많은 속성을 검증합니다.이 이름은 Darcs Advanced Revision Control System의 [4]재귀 약자입니다.

모델

Darcs는 패치를 일류 시민으로 취급합니다.사용자에게 저장소는 패치 세트로 인식될 수 있습니다.여기서 각 패치는 다른 패치에 대해 반드시 순서가 매겨지는 것은 아닙니다.즉, 패치 세트는 부분적으로만 순서가 매겨진 세트입니다.대부분의 경우 패치는 여러 저장소 간에 독립적으로 전송할 수 있습니다.

Git 또는 Mercurial과 같은 스냅샷 기반 시스템에서 추가 명령이 필요한 많은 분기, 병합 및 체리 피킹 작업은 Darcs에서 일반적인 "pull" 및 "push" 명령을 사용하여 직접 수행할 수 있습니다.사용자 인터페이스의 관점에서 이는 Darcs의 명령어 수가 적음을 의미합니다.이러한 명령어는 보다 인터랙티브합니다.즉, 리모트저장소와 교환할 패치를 보다 정확하게 선택할 수 있습니다.

저장소의 패치는 선형으로 정렬됩니다.Darcs는 패치 재주문 가능 여부(커뮤니케이션이라고 하는 조작)와 그 방법을 자동으로 계산합니다.이러한 계산은 이른바 "패치 이론"을 구현합니다.

Darcs 패치에는 다음과 같은 변경이 포함될 수 있습니다.

  • 회선 변경,
  • 파일 및 디렉토리 작성 및 삭제,
  • 파일 및 디렉토리 이동,
  • 단어 대체(일반적으로 코드 리팩터링에 사용됩니다. 예를 들어, 지정된 파일에서 "foo"의 모든 항목을 "bar"로 바꿉니다.)

패치간의 의존성의 개념은 구문적으로 정의됩니다.직관적으로 A가 B가 수정하는 콘텐츠를 제공하는 경우 패치 B는 다른 패치 A에 의존합니다.즉, 코드의 다른 부분을 수정하는 패치는 기본적으로 독립되어 있는 것으로 간주됩니다.이것이 바람직하지 않은 경우에 대처하기 위해 Darcs를 사용하면 패치 간의 의존 관계를 명시적으로 지정할 수 있습니다.

버전 2.10 이후 Darcs는 기본적으로 인내력 차이를 사용합니다.

역사

Darcs는 2002년 6월에 GNU arch의 새로운 패치 포맷을 설계하기 위한 David Roundy의 노력에서 발전했습니다.이러한 논의는 Arch에 대한 어떠한 코드도 커밋하지 않고 패치 이론의 개념으로 이어졌습니다.Darcs의 초기 버전을 C++로 작성한 후 Haskell 버전은 2002년 가을에 작성되어 2003년 4월에 일반에 공개되었습니다.Darcs 2.0은 2008년 4월에 출시되어 보다 견고한 저장소 포맷과 지수적인 머지 [5]문제를 최소화하기 위한 새로운 패치 시멘틱스 "darcs-2"를 도입했습니다.현재의 개발 전략은 동일한 저장소 형식을 유지하면서 최적화를 구현하고 새로운 기능을 추가하는 데 초점을 맞추고 있습니다.

단점

Darcs는 [6][7]실적에 대한 이유로 비난을 받아왔다.가장 주목할 만한 문제 중 하나는 Darcs 1.x의 병합 알고리즘과 관련된 것으로, 일부 충돌을 병합하기 위해 기하급수적인 작업을 수행할 수 있습니다.Darcs [8]2에서 문제가 완전히 수정되지는 않았지만 지수 병합 빈도는 감소했습니다.재귀적 충돌의 병합이 실패하는 [9]버그는 여전히 남아 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Changelog for darcs". Hackage. Retrieved 2018-06-24.
  2. ^ "Changelog for darcs". Hackage. Retrieved 2022-04-17.
  3. ^ Roundy 2005, 페이지 2: '초기 C++ darc에서 발생한 문제 중 하나는 유닛 테스트 코드가 없다는 것입니다.첫 번째 darcs 레코드에서 2주 이내에 Quick Check를 사용하여 패치 기능을 테스트하기 시작했고, 같은 날 Quick Check에서 발견된 버그를 수정했습니다.QuickCheck를 사용하면 기능이 가져야 하는 속성을 쉽게 정의할 수 있으며, 이러한 속성은 무작위로 생성된 데이터로 테스트됩니다.'
  4. ^ 를 클릭합니다Roundy, David (2008-10-21), "prefer recursive acronymn (sic) to embarrassing one", Darcs (Commit), Darcs Hub.
  5. ^ "Two", Darcs
  6. ^ 를 클릭합니다Marlow, Simon (March 7, 2007), "Current status of Darcs", Darcs users (mailing list), OSUOSL.
  7. ^ 를 클릭합니다Fendt, Robert (January 9, 2009), "DVCS Round-Up: One System to Rule Them All?", Developer Network, vol. 1, Linux Foundation, archived from the original on 2009-02-28.
  8. ^ 를 클릭합니다"ConflictsFAQ", Wiki, Darcs.
  9. ^ 를 클릭합니다"Issue 1520 Irrefutable pattern failed for pattern Data.Maybe.Just a2", Bug Tracker, Darcs.

외부 링크