ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • git server repository 환경 구성하기
    소프트웨어 2010.09.29 09:54

    git은 kernel 프로젝트에서 그동안 사용해오던 BitKeeper대신
    kernel 소스버전 관리를 위해 리누스 토발즈가 참여하여 개발한
    분산 소스 버전 관리 시스템입니다.

    이 git을 사용하기로 결정한 이유는 CVS나 SVN등의 중앙 버전 관리 시스템들은
    cvs/svn 서버가 켜져있어야만 commit등의 작업을 수행할수 있지만
    git은 서버가 켜져 있지 않아도 local 저장소에 commit등의 작업을 할수 있어서
    저처럼 여러 컴퓨터에서 작업을 수행할때 불편함을 조금은 덜수 있을거 같았기에
    설정을 해보았습니다.

    어후 이미지 수정 완료 ㅡㅜ :: dia로 그린 이미지....



    제가 사용하려고 하고자 하는 구조는 이미지처럼 컴퓨터 3대에서
    각각의 local 저장소를 만들고 3대중 한대인 노트북에 서버 저장소를 만들어서
    서로간에 clone, pull, fetch등을 수행하는 것입니다.

    서버 저장소를 만들곳은 우분투 리눅스 ( Ubuntu Linux ) 10.04 LTS버전이
    설치되어있는 노트북입니다.


    설정 방법
    0. git 패키지 설치
    $ sudo apt-get install git-core

    1. git server 계정 생성
    $ sudo adduser \
    --system \
    --shell /bin/bash \
    --gecos 'git version control' \
    --group \
    --home /home/git \
    git
    $ sudo passwd git

    2. git 정보가 저장될 repositories 디렉토리 생성
    $ sudo -u git mkdir /home/git/repositories

    3. 서버측에 저장할 프로젝트를 로컬에 생성
    $ cd
    $ mkdir Project
    $ cd Project
    $ touch README
    $ git init
    $ git add .
    $ git status
    $ git commit -a -m "Project First Commit"

    4. public repository를 만들기 위한 설정
    $ pwd
    ~/Project
    $ cd ..
    $ ls
    Project
    $ git clone --bare Project Project.git
    $ touch Project.git/git-daemon-export-ok

    5. Project.git을 git계정의 repositories로 이동
    $ sudo -u git cp -R Project.git /home/git/repositories
    $ cd /home/git/repositories/Project.git
    $ sudo -u git git --bare update-server-info
    $ sudo -u git mv hooks/post-update.sample hooks/post-update

    6. 다른 컴퓨나 임의의 디렉토리에서 clone 명령을 수행 파일을 제대로 받아오는지 확인
    Project.git을 만들때 사용한 Project 디렉토리는 백업후 clone을 통해 새로 생성을 해주도록 한다.
    clone을 통해 Project.git 내용을 받아와야 따로 remote를 추가하지 않아도 origin이라는 alias로
    remote가 기본 셋팅이 되게 된다.
    $ mkdir dev
    $ cd dev
    $ git clone git@HostName:repositories/Project

    7. 기타 명령어
    - 로컬 리포지토리에 서버 저장소 alias 추가
    $ pwd
    ~/Project
    $ git remote -v
    $ git remote add sv git@HostName:repositories/Project
    $ git remote -v
    sv git@HostName:repositories/Project (fetch)
    sv git@HostName:repositories/Project (push)

    - 로컬 리포지토리에서 파일을 수정한뒤 서버 리포지토리에 업로드 하는 방법
    $ vim README
    $ git commit -a -m "README file modified"
    $ git push sv

    - 서버 리포지토리에 변경된 내용을 받는 방법
    $ git fetch sv



    설정에 참고한 사이트
    01. git manual : [ http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#setting-up-a-public-repository ]
    02. aesop git 강좌 : [ http://www.aesop.or.kr/?document_srl=156745&mid=Board_Documents_Application ]
    03. windows git
    - msysgit : [ http://code.google.com/p/msysgit/ ]
    - git Extensions : [ http://sourceforge.net/projects/gitextensions/files/ ]

    windows에서 사용하기로는 git Extensions가 가장 좋을듯 합니다.
    msysgit은 cmd창에 리눅스 명령이 가능하도록 만든 형식이라 콘솔 명령이 익숙치 않으면 조금 불편한데다가 git Extensions를 설치할때 msysgit을 설치하게됩니다. 그 위에 GUI를 입혀서
    작동하는 방식이다보니 처음 사용자는 GUI쪽이 좀더 낫겠지요



    덧붙이는 글 1.) 어제 이 설정을 하느라 거의 12시간을 소비했네요.....
    처음부터 git manual 사이트를 참고해서 했으면 금방 끝냈을 것을 google 검색으로 나온 사이트들을
    참고 하면서 하느라 제가 구성하려는 환경에서는 그다지 필요치 않은
    gitosis라던지 git daemon이라던지 설치해서 삽질하느라 날린 시간 생각하니 어후 ㅠ.ㅠ

    한줄 결론 : 공식 메뉴얼 사이트가 짱임!!!

    덧붙이는 글 2.) 쓸데없는 곳에서 삽질하는 중에 올바른 방법을 알려주신 peniar님 감사합니다.







    댓글 13

Designed by Tistory.