하아~ Gitolite 설치하고 오랜시간이 흘렀다.
이제는 어떻게 쓰는지 알아보자.
1. pwd
- Gitolite의 환경을 설정을 하기 위해서는 [ gitolite-admin.git ] repository를 다루면 된다.
- 앞에서 Gitolite의 관리자로 [ gitolite ] 계정을 설정했으니 해당 계정으로 작업을 하면 된다.
$ git clone git-repo@localhost:gitolite-admin.git
- clone 이후 디렉토리를 살펴보면 위와 같다.
2. gitolite.conf
- repository 別 권한 설정에 대한 정보는 [ ./conf/gitolite.conf ] 파일에 있다.
- 참 직관적이고 쉽게 되어있다.
- 하나씩 알아보자.
3. Permission
- Gitolite에서 사용할 수 있는 옵션은 다음과 같다.
Permission | Comments |
- | deny |
R | show |
RW | create a ref or fast-forward push a ref. No rewinds or deletes. |
RW+ | create, fast-forward push, rewind push, or delete a ref. |
C | create repository. |
RWC | RW but no longer permit creating a ref. |
RW+C | RW+ but no longer permit creating a ref. |
RWD | RW but no longer permit deleting a ref. |
RW+D | RW+ but no longer permit deleting a ref. |
RWCD | RW but no longer permit creating and deleting a ref. |
RW+CD | RW+ but no longer permit creating and deleting a ref. |
M | no longer permit merge. |
- (우쒸 이 놈의 티스토리... 위지윅으로 표 편집하기 짜증나네...)
- "-", "R" qualifier의 경우는 밑에서 예를 들면서 다시 한 번 설명을 하겠다.
- "RW" qualifier는 앞으로 나아가는 것은 모두 가능하지만, 지우거나 되돌아가는 것을 허용하지 않는다.
- "RW+" qualifier는 진정한 모든 기능 할당이다.
- 단독으로 "C" qualifier를 할당할 경우 repository를 create할 수 있다.
- "RWC"와 같이 같이 사용되는 "C"와 단독으로 사용되는 "C"는 의미가 다르다!!!
- 만약 단독으로 사용된 "C" qualifier가 적용되었을 경우,
다른 qualifier와 같이 사용되는 "C" or "D" permission 내역은 적용되지 않는다.
- 마지막으로 "M" qualifier가 있다. 이는 merge를 허용하지 않고 싶을 경우에 사용한다고 한다.
4. Structure
- [ gitolite.conf ] 옵션의 문법(?)은 아래와 같다.
<permission> <zero or more refexes> = <one or more users/user groups>
- 여기에서 애매한 용어가 나온다. 바로 "refexes"
refexes = a regex that matches a ref
- 그러면 [ ref ]는 무엇이냐고? 이런 의문을 갖는 분들은 Git을 많이 공부하지 않으신 분이 분명하다!!!
- [ refs/heads/master ] 이런것 많이 보지 않으셨을런지... ^^
- 저 위의 "문법"에 대해서 실 사용예를 몇 가지 들어보겠다.
repo wow
RW master = chani
RW refs/tags/v0.[0-9] = hardworker
RW source/ = iamslave
RW master = chani
RW refs/tags/v0.[0-9] = hardworker
RW source/ = iamslave
- [ RW master = chani ]는 "master"라는 브랜치 RW 권한을 chani 계정에게 줘라!라는 의미이다.
- 그런데, 여기에서 주의할 점이 있다. [ refexes = a regex that matches a ref ] 포인트는 "regex"
- 그래서 'master' 브랜치 뿐만 아니라 "master21", "master_wow" 등도 모두 해당한다.
- 그러면 정확히 "master" 브랜치만 지정하려면 어떻게 해야할까? 정답은 "$"
RW master$ = chani
- 그 다음 [ RW refs/tags/v0.[0-9] = hardworker ]를 살펴보면 tag에 대한 권한 설정도 확인이 된다.
- 그 다음 [ RW source/ = iamslave]를 보면 디렉토리에 대한 권한 설정도 확인이 된다.
- Gitolite는 기본적으로 명시되지 않을 경우에는 [ refs/heads/ ]가 생략되었다고 판단한다.
5. Group
- 권한을 주기 위해서 일일이 계정이름을 적어주는 것은 너무 번거롭다.
- 팀 別 권한을 주고, 그 안에 업무 別 권한을 주는 등의 설정을 위해서 Group 설정을 해보자.
@prj_kernel_repo = kernel linux
@prj_kernel_user = chani john
@prj_uboot_repo = uboot boot # make uboot
@prj_uboot_user = miae charlse
@prj_repo = @prj_kernel @prj_uboot
@prj_user = @prj_kernel @prj_uboot
@prj_kernel_user = chani john
@prj_uboot_repo = uboot boot # make uboot
@prj_uboot_user = miae charlse
@prj_repo = @prj_kernel @prj_uboot
@prj_user = @prj_kernel @prj_uboot
- 여기에서 특이한 점은 repository와 user 그룹을 구분할 방법은 없다.
- 사용을 할 때에 그 성격이 구분된다.
6, Read but...
- Permission에서 "-"와 "R"의 용법에 대해서 알아보자.
repo gitolite-admin
- = gitweb daemon
option deny-rules = 1
repo @all
R = gitweb daemon
- = gitweb daemon
option deny-rules = 1
repo @all
R = gitweb daemon
- 위 글상자 안의 것을 보면 더 이상 설명이 필요 없을 것 같다.
- 다만, 주의할 점은 순서이다. "-"가 앞에 위치하고 "R"이 뒤에 와야 한다.
7. Tip
- Makefile과 같은 중요한 파일을 제어하는 방법에 대해서 알아보자.
@professional = chani john whatwant charlse
@begineer = doosan twins
repo ourproject
RW = @professional @begineer
RW source/ = @professional
- source/Makefile = @begineer
RW source/ = @begineer
@begineer = doosan twins
repo ourproject
RW = @professional @begineer
RW source/ = @professional
- source/Makefile = @begineer
RW source/ = @begineer
- 위 내용을 잘 살펴보아야 한다. 포인트는 제일 밑의 2줄!
- [ source/Makefile ]에 대한 권한을 빼앗고선 [ source/ ]에 대한 권한을 설정해주었다.
- 순서가 중요하다!
Gitolite를 제대로 멋지게 사용해보자!!!
반응형
'SCM > Git-GitHub' 카테고리의 다른 글
Gitolite - user, repo 추가하기 (14) | 2012.05.26 |
---|---|
Git 계정 관리 - Gitolite's Repository (4) | 2012.05.20 |
Git 계정 관리 - Gitolite 설치하기 (23) | 2012.05.15 |
GitWeb + Nginx (0) | 2012.05.09 |
SSH Public Key - SSH 공개키 (0) | 2012.05.04 |