하아~ Gitolite 설치하고 오랜시간이 흘렀다.
이제는 어떻게 쓰는지 알아보자.


1. pwd

     - Gitolite의 환경을 설정을 하기 위해서는 [ gitolite-admin.git ] repository를 다루면 된다.
     - 앞에서 Gitolite의 관리자로 [ gitolite ] 계정을 설정했으니 해당 계정으로 작업을 하면 된다.



     - 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 ]는 "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

     - 여기에서 특이한 점은 repository와 user 그룹을 구분할 방법은 없다.
     - 사용을 할 때에 그 성격이 구분된다.



6, Read but...

     - Permission에서 "-"와 "R"의 용법에 대해서 알아보자.

repo gitolite-admin
   -  =   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

     - 위 내용을 잘 살펴보아야 한다. 포인트는 제일 밑의 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

+ Recent posts