머큐리얼
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
머큐리얼은 2005년 맷 맥칼에 의해 처음 발표된 분산 버전 관리 시스템이다. 비트키퍼의 무료 버전 배포 중단에 대응하여 개발되었으며, 깃과 유사하게 리눅스 커널 프로젝트의 버전 관리를 위해 개발되었다. 깃에 의해 리눅스 커널 프로젝트에서 채택되지는 않았지만, OpenJDK, 모질라 등 다양한 프로젝트에서 사용되었으며, 현재도 많은 프로젝트에서 사용되고 있다. 머큐리얼은 SHA-1 해시를 사용하여 리비전을 식별하고, HTTP 기반 프로토콜을 통해 네트워크 상에서 저장소에 접근하며, 텍스트 파일과 바이너리 파일을 효율적으로 처리하도록 설계되었다.
더 읽어볼만한 페이지
- 분산 버전 관리 시스템 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다. - 분산 버전 관리 시스템 - 비트키퍼
비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다. - 자유 버전 관리 소프트웨어 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다. - 자유 버전 관리 소프트웨어 - 비트키퍼
비트키퍼는 래리 맥보이가 설계한 버전 관리 시스템으로, 리눅스 커널 개발 지원을 위해 거론되다 라이선스 정책 변경으로 오픈 소스 커뮤니티와 갈등을 겪었으나, 이후 아파치 라이선스 2.0으로 오픈 소스화되었다. - 버전 관리 시스템 - 미디어위키
미디어위키는 위키백과 등 위키미디어 재단 프로젝트에서 사용되는 PHP 기반의 자유 소프트웨어 위키 엔진으로, 확장성, 다양한 기능, 사용자 지정 용이성 등을 바탕으로 위키 기반 웹사이트 구축 및 관리에 기여한다. - 버전 관리 시스템 - 깃 (소프트웨어)
깃은 리누스 토르발스가 개발한 분산 버전 관리 시스템으로, 빠른 분기 및 병합, 분산 개발 환경 지원, 대규모 프로젝트 처리 효율성 등의 특징을 가지며, 깃허브, 깃랩 등에서 서비스되며 소프트웨어 개발 분야에서 널리 사용된다.
머큐리얼 - [IT 관련 정보]에 관한 문서 | |
---|---|
일반 정보 | |
이름 | Mercurial |
종류 | 버전 관리 |
개발자 | 올리비아 맥콜, 피에르-이브 다비드 |
라이선스 | GPL v2+ |
최초 릴리스 | 2005년 4월 19일 |
프로그래밍 언어 | 파이썬, 러스트, C |
운영체제 | 유닉스 계열, 윈도우, macOS |
웹사이트 | Mercurial 공식 웹사이트 |
기타 | |
비고 | 올리비아 맥콜은 이전의 맷 맥콜임. |
2. 역사
머큐리얼은 2005년 4월 19일 올리비아 맥칼(Olivia Mackall)에 의해 처음 발표되었다.[6] 이는 당시 리눅스 커널 프로젝트에서 사용되던 상용 버전 관리 시스템인 BitKeeper가 라이선스 문제로 무료 버전 제공을 중단한 것에 대한 대응이었다.[6] 맥칼은 리눅스 커널을 위한 새로운 분산 버전 관리 시스템을 개발하고자 했으며, 이는 리누스 토르발스가 비슷한 목적으로 Git 개발을 시작한 지 며칠 지나지 않은 시점이었다.[7]
비록 리눅스 커널 프로젝트는 최종적으로 Git을 채택했지만, 머큐리얼은 이후 다양한 오픈 소스 프로젝트에서 널리 사용되었다. 그러나 시간이 지나면서 OpenJDK와 같이 과거 머큐리얼을 사용했던 일부 주요 프로젝트들은 다른 시스템으로 전환하기도 했다.[10] 머큐리얼이라는 이름은 비트키퍼 개발자인 래리 맥보이의 성격에서 영감을 받아 지어졌다.[8][9][32]
2. 1. 개발 배경
2005년 4월 초, 리눅스 커널 개발에 사용되던 상용 버전 관리 시스템인 BitKeeper가 라이선스 문제로 인해 무료 버전 제공을 중단한다고 발표했다.[6] 당시 리눅스 커널 개발에 참여하고 있던 매트 맥칼(Matt Mackall)은 이를 계기로 BitKeeper를 대체할 새로운 분산 버전 관리 시스템 개발에 착수했다. 그는 2005년 4월 19일 머큐리얼의 첫 버전(0.1)을 공개했다.[6][31]흥미롭게도, 머큐리얼 프로젝트는 리눅스 커널의 창시자인 리누스 토르발스가 비슷한 목표로 Git 개발을 시작한 지 불과 며칠 후에 시작되었다.[7] 맥칼은 리눅스 커널 메일링 리스트에서 데이터 저장 방식의 효율성 등을 근거로 머큐리얼의 기술적 우위를 주장하며 토르발스와 논쟁을 벌이기도 했다. 하지만 리눅스 커널 프로젝트는 최종적으로 Git을 채택했다. 그럼에도 머큐리얼은 이후 수많은 다른 오픈 소스 프로젝트에서 활발히 사용되고 있다. 이 두 시스템의 경쟁 구도는 해커 문화에서 "Git vs. Mercurial"이라는 유명한 논쟁거리 중 하나가 되었다.
머큐리얼(Mercurial)이라는 이름의 유래에 대해 맥칼은 메일링 리스트에서 다음과 같이 설명했다.
"첫 번째 릴리스 직전에, 나는 래리 맥보이를 (변덕스러운 의미로) 머큐리얼하다고 묘사하는 진행 중인 비트키퍼 곤경에 대한 기사를 읽었다. 여러 의미, 편리한 약어(Hg), 그리고 나의 기존 명명 방식(내 이메일 주소 참조)과의 적합성을 고려하여 즉시 떠올랐다. 따라서 머큐리얼은 래리를 기리기 위해 명명되었다. 깃에 대해서도 그런지는 모르겠다."[8][9][32]
과거 OpenJDK와 같은 주요 프로젝트들이 머큐리얼을 사용하기도 했으나,[10] Java 16 버전 이후로는 Git으로 전환하는 등 변화가 있었다.
2. 2. 명칭 유래
머큐리얼의 개발자인 올리비아 맥칼[8]은 메일링 리스트 답변을 통해 '머큐리얼(Mercurial)'이라는 이름이 어떻게 선택되었는지 설명했다.[9][32]: 첫 번째 릴리스 직전에, 나는 래리 맥보이(비트키퍼 개발사 BitMover의 CEO)를 (변덕스러운 의미로) 머큐리얼하다고 묘사하는 진행 중인 비트키퍼 곤경에 대한 기사를 읽었다. 여러 의미("Mercurial"은 "수은의", "민첩한"이라는 의미도 있음), 편리한 약어(Hg), 그리고 나의 기존 명명 방식(내 이메일 주소 참조)과의 적합성을 고려하여 즉시 떠올랐다. 따라서 머큐리얼은 래리를 기리기 위해 명명되었다. 깃에 대해서도 그런지는 모르겠다.[8][9][32]
2. 3. 주요 연표
2005년 4월 초, 리눅스 커널 개발에 사용되던 BitKeeper의 무료 버전 배포 중단이 발표되었다.[6] 이 발표는 SourcePuller 개발을 이유로 BitKeeper가 무료 버전 지원 중단을 발표한 데 따른 것이었다. 이에 리눅스 커널 개발자 중 한 명인 올리비아 맥칼(Olivia Mackall)은 BitKeeper를 대체할 분산형 버전 관리 시스템 개발에 착수하여 4월 19일 머큐리얼 버전 0.1을 발표했다.[31] 이는 리눅스 커널의 원저작자인 리누스 토르발스가 비슷한 목표로 Git 개발을 시작한 지 며칠 후였다.[7]맥칼은 리눅스 커널 메일링 리스트에서 데이터 차분 형식을 통한 저장소 크기 절약 등 머큐리얼의 장점을 내세우며 토르발스와 논쟁을 벌이기도 했다. 그러나 리눅스 커널 프로젝트는 최종적으로 Git을 채택했다. 이후 "Git vs. Mercurial" 논쟁은 해커 문화의 주요 논쟁거리 중 하나가 되었다.
결국 리눅스 커널 프로젝트는 Git을 채택했지만, 머큐리얼은 이후 다른 여러 프로젝트에서 사용되게 되었다. 다만, 과거 머큐리얼을 사용했던 OpenJDK와 같은 일부 유명 프로젝트는 Java 16 이후 더 이상 사용하지 않고 있다.[10]
맥칼은 머큐리얼 메일링 리스트를 통해 "머큐리얼"이라는 이름의 유래를 밝혔다. 그는 첫 릴리스 직전, BitKeeper 관련 기사에서 래리 맥보이(BitKeeper 개발사 BitMover의 CEO)를 '변덕스럽다(mercurial)'고 묘사한 것을 보았다. 이 단어가 가진 여러 의미('수은의', '기민한' 등)와 편리한 약어, 그리고 자신의 기존 명명 방식과의 유사성을 고려하여 이름을 선택했다고 설명했다. 즉, 머큐리얼은 래리 맥보이를 기리기 위해 명명된 것이다.[8][9][32]
3. 설계
머큐리얼은 분산 환경에서의 효율적인 협업을 지원하고, 다양한 종류의 파일을 효과적으로 관리하며, 사용 편의성과 강력한 기능을 동시에 추구하는 것을 핵심 설계 방향으로 삼았다.
3. 1. 주요 특징
머큐리얼은 리비전을 식별하기 위해 SHA-1 해시를 사용한다. 네트워크를 통해 저장소에 접근할 때는 왕복 요청, 새로운 연결, 전송되는 데이터를 줄이기 위해 HTTP 기반 프로토콜을 사용한다. 또한 HTTP 기반 프로토콜과 매우 유사한 프로토콜을 사용하는 SSH를 통해서도 작동할 수 있다. 기본적으로 외부 병합 도구를 호출하기 전에 3방향 병합을 사용한다.설계 목표는 다음과 같다.
- 높은 성능과 확장성 확보
- 서버가 필요 없는, 완전히 분산된 공동 개발 환경 지원
- 텍스트 파일과 바이너리 파일 모두 효율적으로 처리
- 개념적 단순성을 유지하면서 고도화된 브랜치 및 병합 기능 제공
또한 머큐리얼은 완전한 웹 인터페이스를 포함하고 있으며, 0.9.5 버전부터 다른 버전 관리 시스템으로 관리되는 소스 코드를 가져오는 기능을 지원한다.[33]
원작자는 Olivia Mackall(옛 이름 Matt Mackall)이며, 2016년에 머큐리얼 개발에서 은퇴했다. mpm
3. 2. 기술 사양
머큐리얼은 리비전(revision)을 식별하기 위해 SHA-1 해시를 사용한다.[1][2] 네트워크를 통한 저장소 접근 시, 효율성을 높인 HTTP 기반 프로토콜을 사용하여 왕복 요청, 새로운 연결, 전송되는 데이터를 줄인다.[1][2] 또한, SSH 상에서도 실행 가능하며, 이때 사용되는 프로토콜은 HTTP 기반 프로토콜과 매우 유사하다.[1][2]기본적으로 외부 병합 도구를 호출하기 전에 3방향 병합 방식을 사용하며,[1][2] 통합 웹 인터페이스를 포함하고 있다.[1][2]
머큐리얼은 마이크로소프트 윈도우, 맥 오에스 텐, 리눅스 (우분투 등)와 같은 유닉스 계열 운영 체제를 지원하는 크로스 플랫폼 소프트웨어이다.[1]
설계 목표는 다음과 같다.[2]
4. 사용법
(내용 없음 - 하위 섹션에서 구체적인 내용을 다룸)
4. 1. 설치
페도라에서는 yum을, 우분투에서는 apt를 이용하여 설치할 수 있다.[51] 우분투에서의 설치 명령어는 다음과 같다.: > apt-get install mercurial
설치 후 다음과 같이 동작을 테스트할 수 있다.
: > hg version
정상적으로 설치되었다면 다음과 유사한 결과가 출력된다.
Mercurial Distributed SCM (version 5.3.1)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2020 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4. 2. 주요 명령어
아래 그림은 머큐리얼의 가장 중요한 몇몇 작업과 개념과의 관계를 보여준다.5. 관련 소프트웨어
(내용 없음)
5. 1. 버전 관리 시스템 (VCS)

- TortoiseHg
- CVS
- Subversion (SVN)
- Git
- Bazaar
- Darcs
- curl
6. 머큐리얼 서버 및 저장소 관리
- 헵타포드(Heptapod): 옥토버스(Octobus)가 개발한 머큐리얼용 GitLab 포크
- 칼리테아: GPLv3 라이선스 기반의 RhodeCode 포크
- 킬른(Kiln): 글리치(구 Fog Creek Software) 개발
- 패브리케이터: Phacility 개발
- RhodeCode: RhodeCode Inc. 개발
7. 소스 코드 호스팅
다음 웹사이트는 Mercurial 저장소를 위한 무료 소스 코드 호스팅을 제공한다.
- Bitbucket by 애틀라시안 (2020년 6월 1일부터 지원 종료)[17]
- Codebase[18]
- FusionForge
- GNU Savannah by 자유 소프트웨어 재단(FSF)
- Heptapod
- Mozdev
- OSDN[19][40] (2024년 12월 기준 기능 작동이 불명확한 것으로 보임)
- Perforce[20][41]
- Puszcza[21][39] (GNU Savannah의 자매 사이트, 우크라이나에서 호스팅)
- SourceForge
- [https://sr.ht SourceHut]
- TuxFamily[22][42]
머큐리얼 웹사이트는 몇몇 [https://www.mercurial-scm.org/wiki/MercurialHosting 다른 호스팅 포지]를 언급한다.[43]
8. 머큐리얼을 사용하는 오픈 소스 프로젝트
머큐리얼은 리눅스 커널 소스 코드 관리에 최종적으로 채택되지는 않았지만, 페이스북(Facebook)[34], 월드 와이드 웹 컨소시엄(W3C), 모질라[24] 등 여러 조직에서 사용하고 있다. 특히 페이스북은 대규모 다중 프로젝트 저장소를 효율적으로 지원하기 위해 러스트 언어를 사용하여 Mononoke[35][36]라는 머큐리얼 서버를 자체 개발했다. 페이스북은 2013년부터 머큐리얼을 도입하여 대규모 통합 코드 저장소를 관리하기 위한 확장 작업을 진행해왔다.[37]
구글 역시 클라우드 기반의 'Piper' 모노레포(monorepo) 백엔드 시스템에서 머큐리얼 클라이언트를 프론트엔드로 활용하고 있다.
하지만 모든 곳에서 머큐리얼 사용이 지속된 것은 아니다. 코드 호스팅 서비스인 비트버킷(Bitbucket)은 2020년 6월(이후 7월로 연기)부로 머큐리얼 지원을 중단한다고 발표했다. 비트버킷 측은 "신규 프로젝트 중 머큐리얼을 사용하는 비율이 1% 미만이며, 개발자 설문조사 결과 90%가 깃(Git)을 사용한다"는 점을 지원 중단의 이유로 설명했다.[38]
머큐리얼 분산 버전 관리 시스템(RCS)을 사용하는 주요 오픈 소스 프로젝트는 다음과 같다.[23][44]
프로젝트 | 비고 |
---|---|
Adium | |
eric | |
GNU Health | |
GNU 다중 정밀도 라이브러리 | |
GNU 옥타브 | |
IcedTea | |
LEMON | |
LiquidFeedback | |
모질라 | 깃/GitHub[25]도 사용[24][45] |
Nginx | |
OpenJDK | [46] |
Orthanc | |
Pidgin | |
RhodeCode | |
Roundup | |
SDL | |
Tryton | |
WinDirStat | |
wmii | 프로젝트 중단, 웹사이트 제거됨 |
XEmacs | |
Xine |
참조
[1]
웹사이트
mpm - Mercurial
https://www.mercuria[...]
2023-02-24
[2]
웹사이트
README file in rust subdirectory, master branch
https://www.mercuria[...]
2020-01-24
[3]
웹사이트
Towards a Better SCM: Revlog and Mercurial
https://www.mercuria[...]
2019-05-26
[4]
웹사이트
Matt Mackall is now Olivia Mackall
https://www.mercuria[...]
2021-05-28
[5]
wiki
Mercurial
Mercurial-scm.org
[6]
메일링리스트
Mercurial v0.1 – a minimal scalable distributed SCM
https://lkml.org/lkm[...]
2005-04-20
[7]
메일링리스트
Re: Mercurial 0.4b vs git patchbomb benchmark
https://archive.toda[...]
2005-04-29
[8]
메일링리스트
Why did Matt choose the name Mercurial?
https://www.mercuria[...]
2016-06-07
[9]
인용구
[10]
인터뷰
Open Sourcing Sun's Java Platform Implementations, Part 1
http://java.sun.com/[...]
Sun
2006-10
[11]
웹사이트
Scaling Mercurial at Facebook
https://code.fb.com/[...]
2014-01-07
[12]
웹사이트
A Mercurial source control server, specifically designed to support large monorepos.: facebookexperimental/mononoke
https://github.com/f[...]
2019-01-31
[13]
웹사이트
Mercurial 4.0 Sprint Notes
https://groups.googl[...]
2021-11-22
[14]
웹사이트
Scaling Mercurial at Facebook
https://code.faceboo[...]
2015-10-13
[15]
웹사이트
Why Google Stores Billions of Lines of Code in a Single Repository
https://cacm.acm.org[...]
2016-07
[16]
웹사이트
Sunsetting Mercurial support in Bitbucket
https://bitbucket.or[...]
2020-04-21
[17]
웹사이트
Sunsetting Mercurial support in Bitbucket
https://bitbucket.or[...]
2019-08-29
[18]
웹사이트
Git, Mercurial & Subversion hosting
https://web.archive.[...]
Codebase HQ
2013-03-04
[19]
웹사이트
Let's start OSS development with Mercurial (Hg) – OSDN
https://osdn.net/hg/
[20]
웹사이트
Try Helix TeamHub Free | Perforce
https://info.perforc[...]
[21]
웹사이트
Welcome [Puszcza]
https://ps.gnu.org.u[...]
[22]
웹사이트
TuxFamily: Free hosting for free people
https://www.tuxfamil[...]
[23]
wiki
Mercurial
Mercurial-scm.org
[24]
웹사이트
Version Control System Shootout Redux Redux
http://soberbuildeng[...]
2007-04-12
[25]
문서
mozilla-mobile/fenix
https://github.com/m[...]
Mozilla Mobile
2021-03-19
[26]
웹사이트
Relicensing
https://www.mercuria[...]
2020-04-15
[27]
wiki
Mercurial
Mercurial-scm.org
[28]
웹사이트
Mercurial (stable branch): b561f3a68e41 rust/README.rst
https://www.mercuria[...]
2020-04-15
[29]
웹사이트
Mercurial (stable branch): /rust/ 디렉토리
https://www.mercuria[...]
2020-04-15
[30]
웹사이트
Matt Mackall is now Olivia Mackall
https://www.mercuria[...]
2021-05-28
[31]
메일링리스트
Mercurial v0.1 - a minimal scalable distributed SCM
http://www.ussg.iu.e[...]
2005-04-20
[32]
메일링리스트
Why did Matt choose the name Mercurial?
https://www.mercuria[...]
2016-06-07
[33]
문서
http://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension
http://www.selenic.c[...]
[34]
웹사이트
Scaling Mercurial at Facebook
https://code.fb.com/[...]
2020-03-07
[35]
웹사이트
A Mercurial source control server, specifically designed to support large monorepos.: facebookexperimental/mononoke
https://github.com/f[...]
2020-03-07
[36]
웹사이트
Google Groups
https://groups.googl[...]
2020-03-07
[37]
웹사이트
Scaling Mercurial at Facebook
https://code.faceboo[...]
Facebook
2015-10-13
[38]
웹사이트
Sunsetting Mercurial support in Bitbucket
https://bitbucket.or[...]
2019-08-29
[39]
웹사이트
Welcome [Puszcza]
https://ps.gnu.org.u[...]
2020-03-07
[40]
웹사이트
"Let's start OSS development with Mercurial (Hg) - OSDN"
https://osdn.net/hg/
2020-03-07
[41]
웹사이트
Try Helix TeamHub Free | Perforce
https://info.perforc[...]
2020-03-07
[42]
웹사이트
TuxFamily: Free hosting for free people
https://www.tuxfamil[...]
2020-03-07
[43]
wiki
Mercurial
https://www.mercuria[...]
Mercurial-scm.org
[44]
wiki
Mercurial
Mercurial-scm.org
[45]
웹사이트
Version Control System Shootout Redux Redux
http://soberbuildeng[...]
2007-04-12
[46]
인터뷰
Open Sourcing Sun's Java Platform Implementations, Part 1
http://java.sun.com/[...]
Sun
2006-10
[47]
메일링
Mercurial v0.1 – a minimal scalable distributed SCM
https://lkml.org/lkm[...]
2005-04-20
[48]
간행물
Matt Mackall, Towards a Better SCM: Revlog and Mercurial
http://selenic.com/m[...]
Ottawa Linux Symposium Proceedings
2006
[49]
서적
Distributed revision control with Mercurial
http://hgbook.red-be[...]
2007-01-01
[50]
wiki
Mercurial
Mercurial-scm.org
[51]
참고
머큐리얼 unixinstall
https://www.mercuria[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com