본문 바로가기
Search/Version Control

Mercurial 소개 (SourceForge)

by egas 2021. 7. 15.

지난 글에는 SVN에 대해 알아보았다. 오늘은 분산 버전 관리 시스템 (DVCS)에 속하는 mercurial에 대해 알아보자.

https://egas.tistory.com/41

 

SVN 소개

SVN(SubVersion)은 Git과 같은 버전 관리 툴이다. 버전 관리 종류는 아래와 같으며, SVN은 중앙 집중식 버전 관리인 CVCS에 속한다. 버전 관리 종류 로컬 버전 관리 VCS 도구 중에 RCS(Revision Control System)을..

egas.tistory.com

mercurial의 뜻은 수은이다. 수은의 원소기호는 hg 여서 모든 명령어가 hg로 시작된다.

설치

공식 사이트에서 각각의 OS에 맞는 버전을 다운로드할 수 있다.

Mac의 경우 brew로도 다운로드가 가능하다.

brew install mercurial

 

설치가 잘 되었는지 버전 확인 명령어로 확인해보자.

hg --version

bitbucket

2020년 8월 26일부터 bitbucket은 공식적으로 git만 지원한다. 더 이상 Mercurial에 대한 호스팅 서비스를 제공하지 않는다. 

 

https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket

 

Sunsetting Mercurial support in Bitbucket - Bitbucket

[Update Aug 26, 2020] All hg repos have now been disabled and cannot be accessed. [Update July 1, 2020] Today, mercurial…

bitbucket.org

https://www.perforce.com/blog/vcs/bitbucket-mercurial-support-ending

 

Bitbucket Mercurial Support Ended: Need Mercurial Repository Options? | Perforce Software

Bitbucket ended Mercurial repository support on July 1, 2020. Here’s what to do if you need to move your repos.

www.perforce.com

 

밑에 보더라도 git이 default이며, 따로 mercurial 설정이 보이지 않는다.

따로 호스팅 서비스를 이용하고 싶다면 아래 사이트들을 참고하자.

https://www.mercurial-scm.org/wiki/MercurialHosting

 

우리는 여러 호스팅 서비스들 중에서 아래를 사용할 것이다.

  • SourceForge.net : 오픈 소스 소프트웨어를 위한 무료 호스팅. Hg 및 기타 많은 프로젝트 기능 지원(위키, 이슈, 메일링 리스트, 포럼 등)

SourceForge

간단한 회원가입과 이메일 인증을 마치면 상단 네비게이션의 create을 눌러서 프로젝트를 생성할 수 있다.

오.. 여러가지를 지원한다. Mercurial을 선택해주도록 하자.

레파지토리가 생성되었다.

사용법

우리는 hg init으로 해당 디렉터리에 hg로 관리될 수 있게 설정할 수 있다.

hg init

혹은 호스팅 사이트에서 클론 받아서 mercurial을 사용할 수 있다. Readme를 호스팅 서비스에 올려보자.

username이 없어서 에러가 발생한다. config 파일에서 username을 설정해주자!

hg config --edit

commit 후 push를 하자.

그 후 SourceForge 사이트를 갱신하면 잘 반영된 것을 볼 수 있다.

 

기본 명령어

Mercurial에는 78개의 명령어가 있으며 아래 명령어로 확인 가능하다.

hg help

 

pull, update

레파지토리를 두개의 디렉터리에 클론을 하고 하나의 디렉터리에서 커밋을 한 다음 푸시를 해보자.

한편 클론받은 다른 디렉터리에서 pull로 받아보자.

pull 명령어를 사용했을때, 아무 일이 안 일어났다. Mercurial에서 pull은 단순히 동기화 단계일 뿐이다. 로컬 작업 폴더를 수정하거나 병합하거나 다른 실제 작업을 추가하지 않는다. 우리는 update 명령어를 통해서 최신 변경 사항을 반영한다.

 

merge

같은 레파지토리를 클론 받은 두 디렉토리에서 각각 hi 파일을 변경해보자.

잘 푸쉬가 되었다. 한편, 클론 받은 다른 디렉터리에 있는 hi 파일을 변경하고 원격 저장소에 push 해보자.

abort가 발생했다. hg diff 명령어로 변경사항들을 확인해보고 hg pull을 해보자.

Mercurial은 병합한 다음 resolve라는 명령어를 사용해서 병합을 잘 해결했다고 알려준다.

hg resolve -l은 병합 이후 변경된 파일 리스트를 보여준다.

hg resolve -l

리스트 앞에 U는 아직 해결이 안된 파일을 R은 해결된 파일들이 표시된다. 다음 명령어로 해결됨을 표시해주자.

hg resolve -m <파일이름>

branch

기본 branch는 default 이다.  holee branch를 생성해보자.

파일을 하나 변경하고 원격 저장소에 push 해보자. 새로 생성된 branch의 경우에는 아래 명령어로 push 해야 한다.

hg push --new-branc

좌측 아래에 holee로 잘 생성된 것을 볼 수 있다.

결론

기본적인 mercurial 명령어들에 대해 알아보았다. git과 상당히 유사했으며 명령어 개수는 svn과 비교해서 2배로 많았다. 브랜치 개념이 명령어에 새로 포함됐다.

 

한편, 그동안 mercurial의 원격 저장소로 유명한 bitbucket이 2020년 7월 이후로는 더 이상 mercurial을 지원하지 않는다. 그 이유로는 jira와 trello로 유명한 기업 Atlassian이 2010년 bitbucket을 인수한 영향도 크다고 생각한다. 2011년 Atlassian는 bitbucket에서 git지원 소식을 발표했다. 또한, bitbucket에서 실시한 조사에서 90퍼센트 이상이 git을 선호한다고 답했다고 한다. 

 

이미 mercurial을 사용하고 있는 코드들에 대해 git으로 이주할 수 있도록 프로그램들을 지원하며, bitbucket을 사용하지 않더라도 여전히 다른 많은 mercurial을 사용할 수 있는 호스팅 사이트들이 존재한다.

 

https://sourceforge.net/projects/issue-tracker22/

 

issue-tracker22

Download issue-tracker22 for free. None

sourceforge.net

 

728x90

'Search > Version Control' 카테고리의 다른 글

git 소개  (0) 2021.07.15
SVN 소개  (0) 2021.07.15

댓글