Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

목차

Table of Contents

소개

  • git을 이해할 때 중요한 것은 local repository 와 remote repository 다.
    • git은 별도의 버전관리서버가 없어도 로컬 환경에서 소스버전을 관리할 수가 있다. 그리고 필요에 따라서 remote repository에 연결 및 저장할 수 있다. 
  • git은 거의 모든 명령을 로컬에서 실행한다.
    • 기존의 CVS, SVN 과 비교했을 때 월등한 속도차를 보인다. 이는 모든 명령이 로컬 파일과 데이터만을 사용하기 때문이다. 로컬 환경에서도 소스를 커밋Commit하고 그 기록History들을 살펴볼 수 있다는 장점을 가지고 있다.
  • 로컬에서 실행되는 환경 덕분에 어느 곳에서도 작업한 내용을 커밋할 수 있고, 네트워크가 연결되었을 때 remote repository에 소스를 Push 할 수 있다.
    • ㅡ_-); 어디서든 일할 수 있는 최적의 환경을 구축할 수 있다는 단점이 있다. 주말에도, 세미나나 컨퍼런스에 가서도 일하고 있는 내 모습이란.. Orz…
  • git에 대해 더 자세히 알고 싶은 분은!!

기존의 소스 및 이슈관리

  • 서버 운영환경
    • 클라우드 서비스 : 서버호스팅(한달 9.9만원) 사용
    • 운영체제 : 우분투 10.04
    • 운영 웹서버 : Bitnami TomcatStack(7.0) 사용
    • 빌드 및 배포 : Maven 과 Jenkins 사용
    • 버전관리 : SVN 사용
    • 이슈관리 : redmine(http://www.redmine.org) 사용

github 사용계기

  • 개발 초창기, 고객사에 ’시연’해야하는 상황 발생
    • 개발이 한창 진행되는 중에 관심을 가진 고객사에 ’시연’을 하기 위해서 시연을 위한 준비와 개발을 동시에 진행해야 하는 상황이 발생했음. 소스 가지치기branch 실시! 소스를 분리하는 것은 어렵지 않게 했음
  • ’시연’을 마친 후 소스를 합치기Merge하는 과정에서 문제가 발생
  • 합치기 너무 어려워!
    • git을 쓰면 가지치기branch와 합치기가 쉽다더라~
    • github 써봤는데 괜찮더라(팀원들 중 일부는 스터디에서 github을 이미 활용하여 개발하고 있었다).
  • 회사에서 개발하고 있는 솔루션이니까 외부에 노출되면 안된다.
    • private repository(유료)를 사용하면 된다.

Github private repository

Github private repository 가격정책

Enterprise 가격정책은 또 다르다. 

 

접근권한이 없는 사용자가 특정 private repository에 접근했을 때

존재하지 않는 페이지(Repository, 404 page not found)라고 나온다.

프로젝트 내에서 Github 사용방식

  • 개발자들 전원 MacBook Pro 사용, 동일한 개발환경을 유지하고 있어서 환경설정이 용이함
  • 터미널에서 git 관련 명령어를 치는 건 번거로운 일이다!
  • SourceTree(http://www.sourcetreeapp.com/) 사용하면 그럴 필요가 없다!
  • GUI 내에서 손쉽게 commit, push, branch, merge 가 가능함
    • Local branch
    • merge
    • remove local branch
    • Remote branch
    • merge
    • remove remote branch
  • 소스의 통합과 분기에 대한 확인이 용이함
  • github 웹페이지에서도 소스를 확인하거나, 커밋된 내용을 확인하기 편리함
    • familly tree

Tag 사용법

  • 태그를 처음 써봤습니다(20121101).
  • 아무 생각없이 태그를 사용해놓고 현장에 와서 소스를 내려받는데 식겁했습니다(20121102).
  • 찬찬히 살펴보니 제가 20121101에 태그를 걸어놓은 파일이 받아지더군요.
  • 그래서 재빨리 새로운 태그를 만들고 다운로드 받아서 처리했습니다.
  • Tag  설정을 해놓지 않는 경우에는 선택된 설정값을 기반으로 해서 github에서 압축파일을 만들어 다운로드를 시작합니다. 시간이 좀 걸립니다.
  • Tag 설정을 해놓으면, 설정하는 순간의 소스파일을 압축해서 클라우드 시스템에 저장해 두기 때문에 훨씬 빠르게(바로!) 소스파일을 내려받을 수 있습니다.
  • 이 Tag를 어떻게 활용할 수 있을까요? ^^
    • 이정표
    • 스프린트 마다 진행된 소스 결과물(산출물?)

프로젝트 내에서 이슈 관리

  • repository - admin : [Features] Wikis, Issues 체크
     
  • 위키에서 사용하는 마크다운에 대한 내용 : https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
  • 메뉴 변화
     
  • Issues
    • Issues[Open issues/Closed Issues]
    • Milestones
    • Issue Assign
      • 이슈에 할당된 사용자에게는 comment 가 추가될 때마다 메일이 발송됩니다.
    • Labels
    • Issue Link

git-flow

git 의 브랜치 전략을 정형화된 사용으로 유도한다.

  • git-flow 브랜치 전략(아래에 있는 a successful git branching model은 git-flow를 이용한 활용방법이랄까?)
    • master: 배포 및 태그 브랜치
    • develop: 실제 개발이 진행되는 브랜치
    • feature: develop 에서 기능개발시 사용하는 브랜치
    • hotfix: 긴급수정사항이 발생했을 경우 사용하는 브랜치
  • git-flow를 활용한 workflow : http://nvie.com/posts/a-successful-git-branching-model/ - git-flow에 대한 workflow를 이해할 수 있는 문서임
  • github과 git-flow를 사용한다면 HubFlow도 좋은 선택이라 생각한다.
  • git-flow 에 대해 보다 이해하기 쉬워진 문서 : http://danielkummer.github.io/git-flow-cheatsheet/

내부망에서 사용하기

공공기관등 보안으로 인한 인트라넷 ..내부망에서 사용 할 수 있나?

김지헌 : 인트라넷의 서버에 Git Repository Server를 설정해두면 사용할 수 있을 겁니다.  

저는 사용한 경험이 없어서 뭐라고 말하기는 어렵군요.

하지만, 과연 공공기관 등의 인트라넷 환경에서 사용하도록 허가할 것인가? 그것에 대해서는 '허가하지 않을 것'이라 생각됩니다.
독립된 부서 내에서 개별적으로 사용 가능하겠지만,
제가 경험했던 새올행정정보시스템의 경우에는 적용하기 어렵습니다.
그곳에서는 PVCS 을 이용해서 소스의 커밋을 관리를 했습니다. 이와 관련해서 승인요청을 하고,
결재를 받는 BPM이 연동되어 있다면 git의 적용은 특히나 어렵겠죠. 그렇게 변경할 경우, 들어가는 비용이 커서 시도하려고 하지 않을 겁니다.
  • Yobi(http://yobi.io/)
    • NHN 에서 오픈소스로 개발하고 있는 협업개발 플랫폼
    • github과 유사함
    • play framework 에서 운영

참고자료