직접 git 환경을 만들어야 하는 처지에 놓이게 됐다. SVN과 비교해 보자면, 설치가 마냥 쉬운 것 만도 아니라서 정말 정말 정말 귀찮더라. 아뭏든 "분산"이라는 이름이 들어가면 이해하기도 어려워지고 그만큼 환경 만드는 것도 어려워진다.
Distributed Source Code Management ?
때로 말이라는게 사람을 현혹하기한다. DSCM(Distributed source code management)라는 설명이 딱 이런 경우인 것 같다. DSCM은 그냥 개인 개발 PC에 저장소를 하나 더 두겠다는 거다. 단순하기 그지 없는 개념인데, 이거 때문에 개념이 들어오기 까지 시간이 꽤나 걸렸다. 나만 그런건가 ?
개인 PC 마다 저장소가 만들어지니까. 저장소가 분산되는 거고, 그래서 분산 소스코드 관리 시스템이 된거다.
개인 PC에 저장소가 만들어지니, commit을 하면 일단 개인 저장소에 코드가 올라간다. push를 해야 중앙 저장소에 코드가 올라간다.
개인 PC에 저장소가 하나 만들어지니, 오프라인에서도 개발할 수 있다. 당연하다.
개인 PC에 저장소가 만들어지니 중앙 저장소에 올리기 전에, 자유롭게 branch를 따서 개발하고 나중에 중앙 저장소에 있는 코드에 병합할 수 있다. 독립적인 개발환경의 구축이 가능하다는 이야기다. 왜 ? 저장소가 분산돼 있으니까.
git은 ssh를 이용한 유닉스 계정기반의 접근 설정이 가능하다. ssh 서버만 있으면 되는 구조라서 간단한 구성이 가능한다. 저장소(repository)에 대한 접근설정 등에 제한이 있다.
gitolite는 git 저장소에 대한 섬세한 접근제어가 가능해서, 오픈소스진영은 물론 기업환경에서도 널리 쓰이는 소프트웨어다. Fedora의 경우 gitolite를 이용해서 10,000개가 넘는 패키지를 관리하고 있다고 한다.
git 설치
gitolite는 git기반으로 작동한다. 그러므로 git 설치는 필수다.
root@git-server # apt-get install git
관리 구성도 및 관리 프로세스
git - gitolite를 이용한 저장소 및 권한 관리 구성 모습이다. 어디까지나 개인적인 설정이다.
git server : git 이 설치된 서버 호스트
git-admin : git 사용유저와 저장소 별 권한을 관리하는 git 관리자 계정
git-repo : git 저장소를 관리하는 유저
관리 프로세스는 다음과 같다.
git-admin으로 프로젝트를 위한 저장소를 만든다.
프로젝트에 개발자를 추가한다. 개발자의 추가는 ssh public key 기반이다. git 관리자(git-admin 계정 권한을 가지는)은 프로젝트에 참여하려는 개발자에게 ssh public key를 달라고 한다. 관리자는 publick key를 등록하고, 이 유저에게 프로젝트 저장소에 대한 권한을 설정한다.
유저는 git-repo로 프로젝트를 clone 한다. ssh 프로토콜을 사용하며, ssh public key에 대한 private key를 이용해서 접근한다. git-repo는 git-admin에게 유저 인증 여부와 권한을 물어본다.
git-admin은 ssh public key와 권한 정보를 이용해서 git 서버에 대한 접근 여부를 git-repo에게 알려준다.
이제 개발자는 git 저장소를 사용할 수 있다.
대략 이런 식으로 멀티계정을 관리할 수 있다. 여기에서는 git-repo가 일종의 대표 계정 역할을 한다.
git 관리자 계정 생성
Git 관리를 위한 대표 계정을 만든다. 이 대표 계정으로 git 사용자 계정을 만들고 권한을 관리한다. Git 관리자 계정이라고 보면 된다. 관리 계정 이름은 정하기 나름이다. 나는 git-admin 으로 만들었다.
root@git-server # adduser git-admin
Adding user `git-admin' ...
Adding new group `git-admin' (1001) ...
Adding new user `git-admin' (1001) with group `git-admin' ...
Creating home directory `/home/git-admin' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
...
git 저장소 계정 생성
저장소를 별도의 계정에서 관리하기로 했다. 계정 이름은 git-repo로 했다. 대표계정으로 사용한다.
root@git-server # adduser git-repo
gitolite 설치
gitolite를 설치한다. gitolite는 저장소를 관리하는 git-repo 계정으로 설치하면 된다.
root@git-server # sudo su - git-repo
git-repo@git-server # pwd
/home/git-repo
git-repo@git-server # ./gitolite/src/gitolite setup -pk git-admin.pub
Initialized empty Git repository in /home/git-repo/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git-repo/repositories/testing.git/
testing.git과 gitolite-admin.git 두 개의 저장소가 만들어 졌다. testing.git은 테스트용 저장소니까 그냥 무시하면 된다. 중요한건 gitolite-admin.git 저장소다. 이 저장소에 git 사용자 계정과 관련된 모든 정보가 들어간다.
git-admin으로 gitolite-admin 저장소를 clone해 온다.
Contents
git server 설치
Distributed Source Code Management ?
설치 환경
git - gitolite 설치
git 설치
관리 구성도 및 관리 프로세스
git 관리자 계정 생성
git 저장소 계정 생성
gitolite 설치
gitolite 환경 설정
git 유저 관리
저장소 권한 설정
관련 글
Recent Posts
Archive Posts
Tags