[Plastic SCM] Plastic SCM과 Github 연동하기 - GitSync

JaehyeokSong0·2022년 12월 28일
0

SCM/Plastic SCM

목록 보기
2/5

개요

Plastic SCM은 Distributed VCS로도, Centralized VCS로도 사용 가능하다.

또한 Plastic SCM은 https와 git 프로토콜을 지원하기 때문에 만약 Plastic SCM을 Distributed VCS(DVCS)로 사용하는 경우 같은 DVCS인 git remote 서버와 연동이 가능하다.


GitSync

GitSync는 Plastic SCM을 Github와 연동할 수 있게 하는 기능이다.

Github repository의 작업물을 Plastic SCM에서의 형식으로 변환하여 clone/pull할 수 있고, 반대로 Plastic SCM에서 작업한 내용을 github에 적합한 형태로 push할 수도 있다.

Plastic SCM Docs에서 GitSync를 이용하여 서로 다른 SCM 간 연동을 가능하게 한 원리를 설명하고 있으니, 궁금하면 찾아보는 것을 추천한다.


gitsync.conf

gitsync.conf 파일을 설정하여 GitSync를 사용할 수 있다.

이 때 gitsync.conf 파일은 반드시 다음 경로에 위치해야 하고, 만약 없으면 새로 생성하면 된다.

C:\Users\{Username}\AppData\Local\plastic4

GitSync를 사용하기 위해서는 gitsync.conf 파일의 사용자 계정Submodules 정보 란을 설정해야 한다.

사용자 계정

[email-mapping] 란을 본인의 github 메일 주소로 설정한다.

[email-mapping]
plastic_user = git_email_address

Submodules

Git Submodule은 git repository 내에서 다른 repository를 디렉토리로 분리해 관리하는 기술이다.

Git의 submodule과 Plastic의 Xlink는 기본적으로 다른 repository의 commit을 가리키는 포인터라는 역할을 수행하기 때문에 둘 간의 매핑이 가능하다.

설정

[submodules] 란을 다음 양식에 맞춰 설정하면 된다.

git_repository_url -> plastic_repository_spec [writable:true|false] [relativeserver:true|false]

git_repository_url에는 github repository의 clone 주소를 입력하면 된다.
HTTPS, SSH 프로토콜 모두 사용 가능하며, 프로토콜 종류에 따라 이후 추가적인 설정이 요구될 수 있다.

plastic_repository_spec에는 Plastic SCM의 repository 정보를 [repository 이름]@[사용자명]@cloud 의 형태로 입력하면 된다.

위 캡처와 같이 Plastic SCM을 실행하면 좌측 상단에 branch@repo@username@cloud 와 같이 workspace 정보가 표시되는데, 이를 복사하여 branch 부분만 제거하여 사용하면 편하다.

추가로 각 field 값을 수정하여 옵션을 설정할 수 있다.
Relative Xlink에 대한 이해를 바탕으로 필요에 따라 설정하도록 하자.

writable
true -> git submodule을 writable한 plastic Xlink로 변환 가능
false / 생략 -> Xlink가 읽기 전용으로 생성

relativeserver
true -> submodule을 relative server를 사용하는 Xlink로 변환 가능
false / 생략 -> non-relative Xlink로 생성

gitsync.conf 작성 예시

최종적으로 양식에 따라 작성한 예시는 다음과 같다.

[email-mapping]
plastic_user = USER@EMAIL.COM

[submodules]
https://github.com/USER/GIT_REPO.git -> PLASTIC_REPO@USER@cloud writable:true relativeserver:true

주의

GitSync 사용 시 Git에서 사용할 수 있는 rebase와 fast-forward merge 커맨드는 제한하여 사용해야 한다.
Plastic SCM은 파일 변경 내역의 전체적인 이력을 고려하기 때문에 이러한 Git 명령어들의 특성과 어울리지 않는다.

(참고) https://www.plasticscm.com/book/#_we_dont_delete_task_branches

위의 그림은 merge를 통해 Git과 Plastic의 차이를 보여주는 그림이다.

Git에서 branch는 pointer의 형태로 관리되기 때문에, fast-forward merge시 commit들의 히스토리를 쉽게 잃어버리게 된다.

반면 Plastic에서는 branch는 changeset의 container이므로 모든 히스토리를 저장하게 된다. 이는 히스토리 관리 측면에서 용이할 수 있지만, 깔끔한 모양의 branch 관리를 선호하는 사람에겐 단점일 수도 있다.

이러한 측면 때문에 GitSync를 사용할 거라면 rebasemerge 사용은 권장되지 않는다.


Github와 동기화하기

Plastic SCM의 Branch Explorer에서 branch를 우클릭하고 Sync with Git 버튼을 클릭한다.

Github Repository URL과 Username, Password를 입력하면 Plastic SCM과 Github Repo를 동기화할 수 있다.

The credentials introduced for the repository are not valid

만약 이러한 에러 메시지와 함께 Sync 실패 시 링크를 참조하자.

터미널에서도 Sync with Git을 수행할 수 있다.

cm sync {local repository name} git {github URL}

pushpull 작업 모두 같은 커맨드를 통해 수행할 수 있으며

cm sync --help 명령어를 사용하여 더 자세히 알아볼 수 있다.


개인적 후기

개인적으로 실제로 사용하기에는 꽤 어려운 기능이었다.
제대로 기능을 사용하기 위해서는 Plastic SCM의 기능과 사용법에 대해 빠삭하게 숙지할 필요가 있다고 느꼈다. 사용 후기


Reference

profile
Hi there :D

0개의 댓글