작업을 위한 Repository가 아닌 소스 배포(?)를 위한 진정한 Server Repository에 대해서 알아보고자 한다.

자고로 Server라 함은 어떤 방식으로 파일을 주고 받을지를 정해야 한다.
바로 Protocol 이다!


Git 에서 사용할 수 있는 Protocol 은 총 4가지 방식이다.

   - Local
   - SSH
   - Git
   - HTTP/S
 


1. Local

아무것도 하지 않아도 사용할 수 있는 가장 기본적인 Protocol이다.
NFS 와 같은 것을 사용하여 공유 디렉토리 같은 것을 사용하여 그냥 막 접근하여 사용하는 방식이다.

개인 사용자가 혼자서 사용할 경우에나 추천하는 방식이며,
팀 작업을 할 경우나 일반 인터넷망에서 사용하는 경우에는 절대 추천하지 않는 방식이다.

폐쇄된 내부에서 같은 망에 물려있는 팀 내에서만 사용하는 경우에나 적용할 수 있을 것이다.



2. SSH

리눅스 환경에서 대부분 사용하는 터미널 접근 방식이다.
telnet과 달리 어느정도 보장된 보안 프로토콜이며, 가장 대중적인 프로토콜이다.

Git을 리눅스 환경에서 사용하고 있다면, 가장 추천하는 방식이다.
물론 윈도우 환경에서도 적용은 할 수 있다.

단, SSH 프로토콜을 사용할 경우 anonymous 접속을 허용하기가 조금 난감해진다.



3. Git

기본적으로 포함되어 있는 Git 데몬을 띄우면 사용할 수 있는 'Git의 Git에 의한 Git을 위한 프로토콜'이다.
일반적으로는 9418 포트를 사용하며, SSH 프로토콜과는 유사한 방식이지만, 인증은 빠진 형태이다.
 
Git 프로토콜의 가장 큰 장점은 '속도'이다. 가장 빠르다!!!
만약 인증이 필요없지만 용량이 큰 프로젝트를 제공하는 상황이라면 무조건 Git 프로토콜을 사용해라!
SSH와 같은 방식이지만, 암호화와 인증이 없기에 자료 전송에 있어서는 짱이다.

다만, 인증 과정이 없기에 읽기 전용으로나 사용해야한다.
그래서 실제로는 push는 SSH 프로토콜을 사용하고, clone 등의 작업은 Git 프로토콜을 사용하곤 한다.



4. HTTP/S

최근 들어서 형상관리 도구를 포함한 많은 분야에서 상당히 일반화되고 있는 HTTP/S 프로토콜이다.

HTTP 문서의 root 디렉토리 밑으로 repository를 넣어놓고,
Git의 hooks 설정만 살짝 해놓으면 되는 간편한 사용법의 프로토콜이다.

HTTP/S의 가장 큰 장점은 대중적인 HTTP/S 포트를 사용하기에, 방화벽 등의 문제에 걸릴 위험이 없다!
또한 HTTPS의 경우에는 SSH 프로토콜과 같이 맞물려서 재미있게(?) 사용할 수도 있다.

다만, 가장 큰 단점은 속도가 느리다는 점이다.
또한 그닥 다이나믹한 기능을 제공하는 프로토콜도 아니다.
그다지 똑똑한 프로토콜이 아니기에 완벽한 전송을 보장한다고 보기에도 어렵다.(하지만 대부분 잘 되긴한다!)






각 프로토콜을 어떻게 설정을 해서 어떻게 사용을 하는지 하나 하나 살펴보고 싶기는한데,
일단 오늘은 지금 졸리기에 여기서 마무리 짓고~

나중에 기분이 어떤지에 따라서.... ^^


개인적으로는 SSH 프로토콜을 사용하는 gitolite를 적용하는 것을 추천하기에
그에 대해서 알아볼 것 같다. ^^

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Git Server - SSH  (2) 2012.02.23
Git Server - Local  (0) 2012.02.22
Add last commit - git commit --amend  (0) 2012.02.16
Log - gitk  (0) 2012.02.15
Log - git log  (2) 2012.02.14

+ Recent posts