맨위로가기

GNU arch

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GNU arch는 분산형 버전 관리 시스템으로, 각 리비전을 고유하게 식별하고, 변경 사항 반영 시 중앙 서버 없이 HTTP, FTP, SFTP를 통해 저장소에 접근할 수 있다. 주요 특징으로는 분할 반영, 변경 사항 중시, 쉬운 트리 복사, 정교한 통합, 암호화된 서명, 파일 이름 변경, 메타데이터 추적 등이 있다. GNU arch는 2001년 Thomas Lord에 의해 시작되었으며, 2003년 GNU 프로젝트에 포함되었으나, 이후 포크와 개발 중단을 겪었다. 비판으로는 학습 난이도와 특이한 파일 명명 규칙, 느린 실행 속도 등이 지적된다.

더 읽어볼만한 페이지

  • 분산 버전 관리 시스템 - 깃 (소프트웨어)
    깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다.
  • 분산 버전 관리 시스템 - 비트키퍼
    비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다.
  • C 소프트웨어 - 윈도우 폰 8
    윈도우 폰 8은 2012년 말에 출시된 마이크로소프트의 모바일 운영 체제로, 윈도우 NT 커널을 기반으로 윈도우 8과 구성 요소를 공유하며, 다양한 기능을 제공하고 2016년 1월 12일까지 소프트웨어 지원이 제공되었다.
  • C 소프트웨어 - 윈도우 폰
    마이크로소프트가 개발한 윈도우 폰은 메트로 UI와 엑스박스 라이브, 빙 검색 등 다양한 서비스 통합을 특징으로 했으나, 낮은 시장 점유율과 앱 부족으로 윈도우 10 모바일로 통합되며 단종된 모바일 운영 체제이다.
  • 자유 버전 관리 소프트웨어 - 깃 (소프트웨어)
    깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다.
  • 자유 버전 관리 소프트웨어 - 비트키퍼
    비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다.
GNU arch - [IT 관련 정보]에 관한 문서
기본 정보
GNU 아치 로고
개발자앤디 타이
제작자토머스 로드
중단 여부
최신 릴리스 버전1.3.5
최신 릴리스 날짜2006년 7월 20일
프로그래밍 언어C
운영 체제리눅스, 윈도우, 맥 OS X
장르버전 관리
라이선스GPL
웹사이트GNU arch 웹사이트

2. 특징

GNU arch는 분산형 버전 관리 시스템으로, 다음과 같은 특징을 갖는다.


  • '''분할 반영(Atomic commits):''' 변경 사항은 전부 반영되거나 아예 반영되지 않는다.
  • '''변경 사항 중시(Changeset oriented):''' 개별 파일 대신 패치와 같은 변경 사항 집합을 추적한다.
  • '''쉬운 트리 복사(Easy branching):''' 효율적이고 쉬운 트리 복사가 가능하다.
  • '''정교한 통합(Advanced merging):''' 리비전 통합 시 어떤 변경 사항을 반영할지 선택할 수 있고, 세 개의 트리를 하나로 통합할 수도 있다.
  • '''암호화된 서명(Cryptographic signatures):''' 모든 변경 사항은 해시와 함께 저장되며, GnuPG같은 외부 서명 프로그램을 통해 서명하여 보안을 강화할 수 있다.
  • '''파일 이름 변경(Renaming):''' 파일과 디렉토리 이름을 쉽게 변경할 수 있으며, 이름 대신 고유 식별자로 추적한다.
  • '''메타데이터 추적(Metadata tracking):''' 파일 권한 및 심볼릭 링크도 추적된다.


이러한 특징들은 분산 개발 환경에서 유연하고 효율적인 버전 관리를 가능하게 한다. 특히, 암호화된 서명과 메타데이터 추적은 보안 및 무결성 유지에 기여한다.

2. 1. 분산 및 탈중앙화

GNU arch는 분산 및 탈중앙화 버전 관리 시스템으로, 각 리비전은 고유하게 식별된다. 이러한 식별자는 서로 다른 소스에서 변경 사항을 쉽게 통합하거나 일부만 반영할 때 사용된다.

탈중앙화되어 있기 때문에 개발자는 중앙 서버의 인증 없이 변경 사항을 반영할 수 있다. HTTP, FTP, SFTP를 통해 프로젝트 전체를 읽기 전용으로 복사하여 공식 저장소에 접근할 수 있다. 개발자들은 각자의 공용 저장소에 변경 사항을 반영하고, 공식 저장소 관리는 저장소 관리자가 수동으로 처리한다.

하지만, 저장소 관리자가 SSH, FTP, SFTP, WebDAV를 통한 접속을 허용하여 인증된 사용자가 중앙 서버에 변경 사항을 반영하도록 함으로써 중앙 집중식 리비전 관리 시스템을 흉내 낼 수도 있다.

GNU arch는 다음과 같은 특징을 가진다.

  • '''분할 반영(Atomic commits):''' 변경 사항 반영은 전부 반영되거나 아예 반영되지 않는다. 반영 전에 트리가 준비되어 있어야 하며, 반영은 완료될 때까지 외부에서 확인할 수 없다. 반영이 중단되면 다음 반영 전에 롤백해야 한다.
  • '''변경 사항 중시(Changeset oriented):''' CVS처럼 파일 하나하나를 추적하는 대신 패치와 같은 변경 사항을 추적한다. 각 변경 사항은 한 소스 트리와 다른 소스 트리의 차이를 나타내며, 한 리비전에서 다른 리비전을 만드는 데 사용될 수 있다.
  • '''쉬운 트리 복사(Easy branching):''' 효율적이고 알아보기 쉬운 트리 복사가 가능하다. 복사된 트리는 이전 리비전에 대한 간략한 정의를 포함하여 개발을 계속할 수 있게 한다.
  • '''정교한 통합(Advanced merging):''' 모든 이전 리비전 및 통합된 리비전에 대한 기록이 영구 보관되므로, 리비전을 통합할 때 어떤 변경 사항이 반영된 트리와 통합할 것인지 선택할 수 있다. 또한, 공유되는 이전 리비전을 기반으로 세 개의 트리를 하나로 통합할 수도 있다.
  • '''암호화된 서명(Cryptographic signatures):''' 모든 변경 사항은 해시와 함께 저장되어 손상을 방지한다. GnuPG같은 외부 파일 서명 프로그램을 통해 해시에 서명하여 저장소가 해킹되었을 때 원치 않는 변경을 막을 수 있다.
  • '''파일 이름 변경(Renaming):''' 파일과 디렉토리의 이름을 쉽게 변경할 수 있다. 파일과 디렉토리는 이름 대신 고유 식별자로 추적되므로, 이름 변경은 변경 사항으로 기록되며 파일에 대한 패치는 두 트리에서 파일 이름이 달라도 문제없이 적용된다.
  • '''메타데이터 추적(Metadata tracking):''' 파일마다 권한 식별자도 추적된다. 심볼릭 링크도 같은 방식으로 추적된다.
[1]

2. 2. 주요 특징

GNU arch는 다음과 같은 몇 가지 특징을 가지고 있다.

  • '''분할 반영(Atomic commits):''' 커밋은 전부 아니면 전무이다. 커밋이 시작되기 전에 트리가 올바른 상태여야 하며, 커밋은 완료될 때까지 외부에서 보이지 않는다. 커밋이 이전에 중단되면 보이지 않은 상태로 유지되며 다음 커밋 전에 롤백되어야 한다. 이를 통해 아카이브와 다른 사용자의 체크아웃된 복사본의 손상을 방지할 수 있다.
  • '''변경 사항 중시(Changeset oriented):''' CVS와 같이 개별 파일을 추적하는 대신, GNU arch는 패치와 유사한 변경 집합을 추적한다. 각 변경 집합은 하나의 소스 트리와 다른 소스 트리의 차이에 대한 설명이므로, 변경 집합을 사용하여 다른 개정판에서 하나의 개정판을 생성할 수 있다. 작성자는 기능 또는 버그 수정당 하나의 커밋을 사용하도록 권장된다.
  • '''쉬운 트리 복사(Easy branching):''' 분기는 효율적이며 아카이브에 걸쳐 있을 수 있다. 분기(또는 '태그')는 단순히 상위 개정판을 선언하며, 거기에서 개발이 계속된다.
  • '''정교한 통합(Advanced merging):''' 모든 조상 및 병합된 개정판의 영구적인 기록으로 인해 병합은 어떤 분기에 어떤 패치가 포함되어 있는지 고려할 수 있으며, 공유된 조상 개정판을 기반으로 삼자 병합을 수행할 수 있다.
  • '''암호화된 서명(Cryptographic signatures):''' 모든 변경 집합은 우발적인 손상을 방지하기 위해 해시와 함께 저장된다. 외부 파일 서명 프로그램(예: GnuPG 또는 다른 PGP)를 사용하면, 이러한 해시는 선택적으로 서명할 수도 있어, 아카이브가 손상된 경우 무단 수정을 방지할 수 있다.
  • '''파일 이름 변경(Renaming):''' 모든 파일과 디렉토리를 쉽게 이름을 바꿀 수 있다. 이것들은 이름이 아닌 고유한 ID로 추적되므로, 기록이 유지되고 파일에 대한 패치는 분기 간에 파일 이름이 다르더라도 제대로 병합된다.
  • '''메타데이터 추적(Metadata tracking):''' 모든 파일의 파일 시스템 권한이 추적된다. 심볼릭 링크가 지원되며 파일 및 디렉토리와 동일한 방식으로 추적된다.[1]

3. 역사

GNU arch는 여러 차례 개발이 중단되고 재개되는 복잡한 역사를 거쳤다. 주요 개발자였던 토머스 로드는 2022년 6월에 사망했다.[16]

3. 1. 버전 1 (tla)

GNU arch를 처음 개발한 사람은 토머스 로드로 그는 2001년에 이 프로젝트를 시작했으며 동시에 프로젝트의 첫 관리자이기도 했다. 이 소프트웨어의 실행 파일 이름은 tla로 이는 Tom Lord's Arch의 줄임말이었다. 그는 이 프로젝트를 CVS를 대체할 목적으로 시작했으며 초기의 모습은 복수의 셸 스크립트의 집합체였다.[21] 이 프로젝트가 GNU 프로젝트의 일부가 된 것은 2003년이다.[22]

다른 개발 주체에 의해 분가가 시도된 적도 몇 번 있었다. 그 중 하나는 지금은 버려졌지만 캐노니컬(Canonical Ltd.)에서 시도했던 Baz였고 다른 하나는 월터 랜드리가 시도했던 ArX였다. 둘 다 큰 반발을 불러일으켰는데 ArX는 개발 방향과 관련된 깊은 분쟁을 겪었고 Baz 프로젝트를 시도한 캐노니컬은 토머스 로드에 의해 개발 태도와 관련된 거센 비난을 받았다.[23]

2005년 8월 토머스 로드는 GNU arch 프로젝트의 관리자 자리에서 물러나면서 Baz를 GNU arch 프로젝트로 받아들이는 것을 추천했다.[24] 하지만 그의 추천은 받아들여지지 않았다. Baz는 캐노니컬에 의해 버려졌고 별도로 진행되던 Bazaar가 Baz의 빈 자리를 채우게 되었다.[25] Baz는 2006년 1.5를 마지막으로 완전히 버려졌다.[26] 2005년 10월, 앤디 타이는 토머스 로드와 자유 소프트웨어 재단이 자신에 대한 GNU arch 프로젝트 관리자 임명 요구를 받아들였다고 발표했다.[27] 그는 새 관리자가 되자마자 Baz의 많은 기능들을 tla에 이식했으나 2008년 3월이 되자 tla에 대한 더 이상의 개발은 없으며 tla는 더 이상 다른 버전 관리 시스템들의 상대가 되지 못한다는 발표를 했다.[28]

3. 2. 버전 2 (revc)

revc는 토머스 로드(Thomas Lord)가 GNU arch의 버전 2로 삼을 것을 목적으로 하여 시작한 프로젝트로, tla와 전혀 다른 구조를 가지고 있으며 Git에서 많은 아이디어를 빌려왔다.[29] 2005년 6월에 처음 발표되었고,[30] 첫 버전 출시는 그 다음 달에,[31] 마지막 버전 출시는 또 그 다음 달에 이루어졌으며 토머스 로드는 직후 관리자 자리에서 물러났다.[32] 이 소프트웨어는 10개의 명령만을 가졌으며, 토머스 로드는 제한적인 네임스페이스와 복잡한 파일 명명 규칙을 없애고 속도를 높이는 것을 목표로 했다.[33]

2008년 이래 마지막 버전인 0.0x2는 지금도 입수할 수 있으며,[34] 토머스 로드는 지금도 GNU arch의 아이디어 중 일부에 흥미를 가지고 있지만 revc의 개발을 계속할 여지는 없다고 밝혔다.[35]

4. 비판

GNU arch는 다른 SCM 시스템을 경험한 사용자조차도 배우기 어렵다는 비판을 가장 많이 받았다. 특히 명령어 수가 많아 신규 사용자를 위협할 수 있으며, 일부 설계 요소는 버전 관리 방식에 대한 Lord의 취향을 지나치게 강조한다는 비판도 있다.[36]

또한 GNU arch는 매우 특이한 파일 명명 규칙([https://web.archive.org/web/20070808210711/http://www.gnuarch.org/gnuarchwiki/FunkyFileNames "FunkyFileNames"])을 사용한다는 점을 비판받았는데, 이는 스크립트, 일부 셸, 그리고 비유닉스 운영 체제로의 이식에 어려움을 야기할 수 있다. GNU arch는 내부 코드 복잡성을 줄이기 위한 설계 결정의 일환으로 실행 시간이 느리다는 비판을 받았다.[37]

5. GNU arch의 종류 (일본어 문서)

현재 사용되고 있는 주요 arch 구현은 다음과 같다.


  • larch (셸 스크립트로 구현됨)
  • GNU arch (tla): larch를 C 언어로 다시 구현한 것으로, 현재 주류이다.

6. GNU arch의 동작 (일본어 문서)

arch는 CVS나 Subversion과 마찬가지로 버전을 관리하는 저장소(리포지토리)를 가지며, 이를 아카이브라고 부른다. 그러나 CVS나 Subversion과 달리 집중시킬 필요가 없다. 필요하다면 다른 사람의 아카이브를 분기시킨 로컬 아카이브를 생성하여 개발에 이용할 수 있다. 나중에 분기된 아카이브에서의 성과를 가져올(병합) 필요가 있다면, 이를 수행하기 위한 보조 기능이 제공된다.[1]

7. GNU arch에서의 주요 조작 (일본어 문서)

GNU arch(`tla` 명령어)에서의 주요 조작 예시는 다음과 같다.

```

$ tla make-archive foo@bar.net--2004 /home/foo/{archives}/2004

```

위 명령은 아카이브 foo@bar.net--2004를 생성하고, 데이터 실체를 /home/foo/{archives}/2004에 배치한다. 이는 로컬 파일의 예시이지만, WebDAV, SSH(SFTP), FTP을 통해서도 배치가 가능하다.

데이터에는 카테고리명, 브랜치, 버전명, 리비전명의 4가지가 일반적으로 요구되므로, 각각을 확인하기 위한 명령어가 준비되어 있다.

```

$ tla categories -A foo@bar.net--2004

$ tla branches -A foo@bar.net--2004 libA

$ tla versions -A foo@bar.net--2004 libA--main

$ tla revisions -A foo@bar.net--2004 libA--main--X.Y.Z

```

libA--main 브랜치의 최신 버전을 가져오는 명령어는 다음과 같다.

```

$ tla get -A foo@bar.net--2004 libA--main

```

libA--main--X.Y.Z의 최신 리비전을 가져오는 명령어는 다음과 같다.

```

$ tla get -A foo@bar.net--2004 libA--main--X.Y.Z

```

libA--main--X.Y.Z--patch-n 리비전을 가져오는 명령어는 다음과 같다.

```

$ tla get -A foo@bar.net--2004 libA--main--X.Y.Z--patch-n

```

로그 작성 명령어는 다음과 같다.

```

$ tla make-log

```

등록 명령어는 다음과 같다.

```

$ tla commit

```

로컬 수정 사항을 고려하여 시도하는 명령어는 다음과 같다.

```

$ tla update

```

로컬 수정 사항을 무시하고 갱신하는 명령어는 다음과 같다.

```

$ tla replay

참조

[1] 간행물 Re: revc http://lists.gnu.org[...] 2008-03-28
[2] 웹사이트 History of Bazaar http://wiki.bazaar.c[...] 2014-05-20
[3] 뉴스 Revision Control with Arch: Introduction to Arch http://www.linuxjour[...] 2004-11-01
[4] 간행물 GNU, doc foo, short-term plans, hacking suggestions, money http://ml.osdir.com/[...] 2003-07-13
[5] 간행물 community spirit http://lists.gnu.org[...] 2004-10-31
[6] 간행물 GNU Arch maintainership http://lists.gnu.org[...] 2005-08-15
[7] 웹사이트 Baz1x - Bazaar Version Control http://bazaar-vcs.or[...] 2006-07-24
[8] 웹사이트 HistoryOfBazaar http://bazaar-vcs.or[...] 2006-07-26
[9] 간행물 releasing 1.5 https://lists.ubuntu[...] 2006-06-30
[10] 간행물 Re: Good News about GNU Arch! http://lists.gnu.org[...] 2005-10-27
[11] 간행물 arch 2.0 code base in progress http://ml.osdir.com/[...] 2005-06-20
[12] 간행물 GNU Arch 2.0 -- first source http://osdir.com/ml/[...] 2005-07-08
[13] 간행물 Arch 2.0 release (revc.0.0x2) http://lists.gnu.org[...] 2005-08-01
[14] 간행물 revc http://lists.gnu.org[...] 2008-03-26
[15] 간행물 Re: revc http://lists.gnu.org[...] 2008-03-28
[16] Citation Thomas Lord 1966-2022 https://berkeleydail[...] 2022-06-26
[17] 웹사이트 What's wrong with Arch? http://sourcefrog.ne[...] 2004-06-21
[18] 웹사이트 Tom Lord interview, and related things http://sourcefrog.ne[...] 2004-09-26
[19] 웹사이트 Some Issues with GNU arch http://www.enyo.de/f[...] 2004-06-09
[20] 문서 http://lists.gnu.org[...]
[21] 문서 http://www.linuxjour[...]
[22] 웹인용 보관된 사본 http://ml.osdir.com/[...] 2011-11-11
[23] 문서 http://lists.gnu.org[...]
[24] 문서 http://lists.gnu.org[...]
[25] 문서 http://bazaar-vcs.or[...]
[26] 웹인용 보관된 사본 https://lists.ubuntu[...] 2008-01-16
[27] 문서 http://lists.gnu.org[...]
[28] 문서 http://lists.gnu.org[...]
[29] 웹인용 보관된 사본 http://ml.osdir.com/[...] 2011-11-11
[30] 웹인용 보관된 사본 http://ml.osdir.com/[...] 2011-11-11
[31] 웹인용 보관된 사본 http://osdir.com/ml/[...] 2011-11-11
[32] 문서 http://lists.gnu.org[...]
[33] 웹인용 보관된 사본 http://osdir.com/ml/[...] 2011-11-11
[34] 문서 http://lists.gnu.org[...]
[35] 문서 http://lists.gnu.org[...]
[36] 웹아카이브 https://archive.toda[...] 2012-07-14
[37] 웹사이트 http://www.enyo.de/f[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com