Pro git - 4.2
Updated:
Pro git - 서버에 Git 설치하기
- Linux에 설치하는 방법에 대해서만 간단히 설명할 것이다.
- 어떤 서버를 설치하더라도 일단 저장소를 Bare 저장소로 만들어야 한다.
- 다시 말하지만, Bare 저장소는 워킹 디렉토리가 없는 저장소이다.
--bare
옵션을 주고 Clone 하면 새로운 Bare 저장소가 만들어진다.- Bare 저장소 디렉토리는 관례에 따라
.git
글자가 이름에 붙는다.
$ git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done.
- 이제
my_project.git
디렉토리에는 복사한 Git 디렉토리 데이터만 들어 있다. - 아래와 같이 실행한 것과 비슷하다.
$ cp -Rf my_project/.git my_project.git
- 물론 설정상의 미세한 차이가 있지만, 저장소의 내용만 고려한다면 같다고 볼 수 있다.
- 워킹 디렉토리가 없는 Git 저장소인 데다가 별도의 디렉토리도 하나 만들었다는 점에서는 같다.
1. 서버에 Bare 저장소 넣기
git.example.com
라는 이름의 서버를 하나 준비하자.- 그리고 그 서버에 SSH로 접속할 수 있게 만들고 Git 저장소를
/srv/git
디렉토리에 저장할 것이다. - 서버에
/srv/git
디렉토리가 있다고 가정하고 아래와 같이 Bare 저장소를 복사한다.
$ scp -r my_project.git user@git.example.com:/srv/git
- 이제 다른 사용자들은 SSH로 서버에 접근해서 저장소를 Clone 할 수 있다.
- 사용자는
/srv/git
디렉토리에 읽기 권한이 있어야 한다.
$ git clone user@git.example.com:/srv/git/my_project.git
-
이 서버에 SSH로 접근할 수 있는 사용자가
/srv/git/my_project.git
디렉토리에 쓰기 권한까지 가지고 있으면 바로 Push 할 수 있다. -
git init
명령에--shared
옵션을 추가하면 Git은 자동으로 그룹 쓰기 권한을 추가한다.
$ ssh user@git.example.com
$ cd /srv/git/my_project.git
$ git init --bare --shared
- Git 서버를 구축하는데 사람이 할 일은 정말 별로 없다.
- SSH로 접속할 수 있도록 서버에 계정을 만들고 Bare 저장소를 사람들이 읽고 쓸 수 있는 곳에 넣어 두기만 하면 된다.
- 동료와 함께 개발할 때 꼭 필요한 것은 SSH 서버와 Bare 저장소뿐이라는 것만은 꼭 기억하자.
- 모든 개발자가 SSH로 접속할 수 있는 서버가 있으면 너무 쉽게 저장소를 만들 수 있다.
- 저장소의 권한을 꼼꼼하게 관리해야 하면 운영체제의 파일시스템 권한관리를 이용할 수 있다.
-
동료가 저장소에 쓰기 접근을 해야 하는 데 아직 SSH로 접속할 수 있는 서버가 없으면 하나 마련해야 한다.
- 아마 당신에게 서버가 하나 있다면 그 서버에는 이미 SSH 서버가 설치되어 있고 지금도 SSH로 접속하고 있을 것이다.
1.1 팀원이 접속하는 방법
- 모두에게 계정을 만들어 주는 방법이 있다. 이 방법이 제일 단순하지만 다소 귀찮다.
- 팀원마다
adduser
를 실행시키고 임시 암호를 부여해야 하기 때문에 보통 이 방법을 쓰고 싶어 하지 않는다.
- 서버마다 git’이라는 계정을 하나씩 만드는 방법이 있다.
- 쓰기 권한이 필요한 사용자의 SSH 공개키를 모두 모아서 ‘git 계정의
~/.ssh/authorized_keys
파일에 모든 키를 입력한다. - 그러면 모두 git 계정으로 그 서버에 접속할 수 있다.
- 이 git 계정은 커밋 데이터에는 아무런 영향을 끼치지 않는다.
- 다시 말해서 접속하는 데 사용한 SSH 계정과 커밋에 저장되는 사용자는 아무 상관없다.
- SSH 서버 인증을 LDAP 서버를 이용할 수도 있다.
- 이미 사용하고 있는 중앙집중식 인증 소스가 있으면 해당 인증을 이용하여 SSH 서버에 인증하도록 할 수도 있다.
- SSH 인증 메커니즘 중 아무거나 하나 이용할 수 있으면 사용자는 그 서버에 접근할 수 있다.