일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- AWS
- PowerMock
- REST
- Lodash
- JaCoCo
- javascript
- Travis CI
- ECMAScript2015
- 인프런
- python
- nginx
- ubuntu
- dict
- Coveralls
- sanghaklee
- Code-coverage
- Unit-test
- java
- API
- ATOM
- NPM
- primitive type
- RESTful
- 개인정보수정
- GIT
- Linux
- node.js
- Gitbook
- {}
- sinopia
- Today
- Total
이상학의 개발블로그
[Git] Git ecosystem with. Github Gist Gitbook Pages Travis 본문
Introduction
개발자들은 자신의 프로그램 소스 코드를 효율적으로 관리하기 위해 버전 관리 툴을 이용한다.
과거에는 SVN을 많이 사용했지만, 최근엔 Git을 대부분 선택한다.
Git과 함께 사용할 수 있는 Git 생태계에 대해서 알아본다.
Git
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
https://git-scm.com
프로그램의 소스 코드를 관리하는 DVCS(Distributed Version Control Systems)
Version Control
버전 관리 시스템은 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다.
로컬, 중앙 집중, 분산 버전 관리NOTE: 필자의 주관적인 비유론, 버전 관리는 2가지 초능력을 가진 사람이다.
첫 번째는 분신술, 두 번째는 타임머신 능력. 분신술을 이용해서 자신을 계속해서 복제한다. 각기 복제된 사람은 각자의 인생을 살아간다. 어떤 복제 인간은 공부만 하고 어떤 복제 인간은 운동만 한다. 공부한 내용이 마음에 들지 않으면 타임머신 기능을 이용해 과거로 돌아가서 다시 배운다. 이렇게 각자의 인생을 살아가는 복제 인간은 어느 시점에서 최초의 복제되기 전의 사람으로 합쳐지고 여태 학습한 지식, 능력 등이 합쳐진다. 굉장하다!
SVN vs Git
SVN : 파일을 관리하는 중앙 서버가 존재하고, 각 클라이언트들은 중앙 서버에서 파일을 Checkout 받아 사용한다. 즉, 중앙 서버에 의존적인 파일 관리 체계이다.
Git: 파일을 관리를 개인 컴퓨터에서 한다. 각 클라이언트들은 자신의 파일 관리 서버에서 버전 관리를 하고, 협업을 위해 원격 저장소를 이용한다.
Git References
- Version Control Visualization
- Version control concepts and best practices
- Learn Version Control with Git
- Git, 분산식 버젼관리시스템(DVCS)
- git - 간편 안내서
- svn 능력자를 위한 git 개념 가이드
- Git을 이용한 협업 워크플로우 배우기
Github
GitHub is a development platform inspired by the way you work. From open source to business, you can host and review code, manage projects, and build software alongside millions of other developers.
https://github.com
Git으로 관리되는 프로젝트를 저장하는 원격 저장소
위의 SVN vs Git 그림에서 Git의 REMOTE REPOSITORY
Make Public Repository
- Add .gitignore : Git 원격 저장소에 올리지 않은 무시될 파일/폴더를 명시하는 파일
- https://git-scm.com/docs/gitignore
- 언어별로 기본 .gitignore 파일을 제공하니 선택해서 사용해도 됨. 필자는
Node
선택
- Add a license : 해당 프로젝트의 라이센스 정보를 명시하는 파일
다음과 같이 Github에 공개된 저장소가 만들어진다.
Try Pull Request
Pull requests let you tell others about changes you’ve pushed to a repository on GitHub.
Github 원격 저장소의 Push된 변경 사항을 다른 사용자들에게 알려 코드 수정 사항에 대해 같이 토론하는 과정
오픈소스 프로젝트에 자신이 만든 코드를 추가해 달다고 요청하거나 오류의 수정을 요청할 수 있다.
1. fork repo
변경하고자 하는 프로젝트를 복사하여 자신의 Github 계정으로 가져온다.
2. coding!
수정 사항을 코딩한다.
3. commit
자신의 fork repo
에 commit 한다.(로컬에 변경 사항 저장)
4. push
자신의 fork repo
에 push 한다.(원격 저장소에 변경 사항 저장)
5. Travis CI build check
Optional - 필자는 해당 프로젝트 Push 시 Travis CI가 자동 빌드한다. Travis CI에 대한 설명은 다시 나온다.
6. Pull Request
수정된 코드를 fork
받은 프로젝트로 병합하기 위해 요청을 보낸다.
- 작업한 fork repo의 branch를 확인한 후 Pull Request 메세지를 적는다.
- 변경되는 file과 code를 다시 한 번 확인한다.
- 전송 버튼을 클릭하면 새로운 Pull Resquest가 생기고 PR 번호를 받는다.
- 앞으로 추가 수정되는 사항과 PR의 승인, 거부 진행이 여기서 진행된다.
- PR 승인 전, validator.js README.md
- 아직
ko-KR
isMobilePhone이 없는 상태
7. Pull Request Accepted
- https://github.com/chriso/validator.js/pull/668
- PR이 승인됐다고 오픈소스 Author에게 PR 메세지가 온 상태
- PR 승인 후, validator.js README.md
ko-KR
isMobilePhone이 추가된 상태*
More
Bitbucket
Code, Manage, Collaborate
Bitbucket is the Git solution for professional teams
https://bitbucket.org
Free plan에서 개인
혹은 5명 이하의 팀
은 private 저장소가 무제한 무료.
Atlassian support.
Gitlab
The platform for modern developers
GitLab unifies issues, code review, CI and CD into a single UI
https://about.gitlab.com
설치형 Git 저장소
Gitlab 장애 GitLab.com Database Incident (한글)
Github References
- Github를 이용하는 전체 흐름 이해하기 #1
- Git과 GitHub 사용하기
- [깃허브(Github)] 2. Github아이디 생성, Github 테스트
- GitHub vs. Bitbucket vs. GitLab vs. Coding
- Bitbucket에서 무료 비공개 git repository 만들기
- 나만의 GIT 서버를 구축하고 프로젝트에 적용하는 방법 (gitlab ssl)
Gist
Instantly share code, notes, and snippets.
https://gist.github.com
짧고 간단한 코드를 저장, 버전관리, 웹에 삽입하는 서비스
Embed Your Gist Code
Script
<script src="https://gist.github.com/SangHakLee/f3bdee00e6bcbb1965c235840eb43034.js"></script>
Result
More
Lepton
Gist를 효율적으로 관리하는 툴
http://hackjutsu.com/Lepton
Colorscripter
<script>
태그 없이 코드 Syntax HighLighting 해주는 서비스
https://colorscripter.com
Gist References
- Gist를 이용한 소스관리
- [Sublime Text 3] 서브라임에서 Gist 연동하기
- 블로그 등에 소스 코드 Snippet 붙여넣기 - GitHub Gist
- 블로그 소스 코드를 보기좋게 Color Scripter 사용법
Gitbook
Documentation made easy
GitBook helps your team write, collaborate and publish content online.
https://www.gitbook.com
Markdown 포맷을 이용해서 e-book을 작성하고 버전 관리, 배포해주는 서비스
Make REST Api Guide Page
Make Tutorial Page
Pages
Websites for you and your projects.
Hosted directly from your GitHub repository. Just edit, push, and your changes are live.
https://pages.github.com
Github 저장소를 웹 페이지로 만들어주는 서비스.
정적 컨텐츠 블로그로 주로 이용된다.
github.io
Github 계정이 있다면 {username}.github.io
로 접근할 수 있는 호스팅 도메인을 1개씩 사용할 수 있다.
https://sanghaklee.github.io
Github Repo를 {username}/{username}.github.io 로 만들면 바로 이용할 수 있다.
https://github.com/SangHakLee/sanghaklee.github.io
Pages는 PHP, JSP, ASP 같은 서버사이드 스크립트를 읽는 서버가 없다.
HTML, CSS, JavaScript를 포함한 정적 컨텐츠만 이용할 수 있다.
Static Site Generator
정적 페이지를 자동으로 만들어주는 프레임워크
Static Site Generator로 생성되는 페이지는 정적이기 때문에 최종으로 생성된 HTML만 올리면 Server-side 언어의 도움을 받을 필요가 없다.
즉, AWS S3와 같이 저장소와 접근 가능한 URL만 존재하면 생성된 HTML을 배포할 수 있다.
Jekyll vs Hexo
이 과정을 쉽고 간편하게 해주는 서비스가 있다.
Ruby 기반의 Jekyll (Repo star rank 1)
Node.js 기반의 Hexo (Repo star rank 3)
… Go 기반의 Hugo (Repo star rank 2)
Pages References
- kakao 기술 블로그가 GitHub Pages로 간 까닭은
- Github pages와 Hexo를 이용하여 블로그 만들기
- 지킬로 깃허브에 무료 블로그 만들기
- Hexo 시작하기
- Static Site Generator
Travis CI
Test and Deploy with Confidence
Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes!
https://travis-ci.org
Github Repo와 연동하여 지속적 통합(continuous integration)을 자동화하는 서비스
.travis.yml
PHP
language: php
php:
- '5.4'
- '5.5'
Node.js
language: node_js
node_js:
- '6'
Do it!
Step 0
아래의 과정은 텍스트로 대체
- Github Services Travis CI 활성화 (Repo - Settings - Intergrations & services)
- Travis CI 가입 (Github 계정 연동)
- Travis CI 사용할 Github Repo 추가
- Github Repo에 프로젝트에 맞는
.travis.yml
파일 추가
Step 1
Travis CI 를 사용할 Repo만 선택한 상태.
No bulids for this repository
Step 2
Github에 Push 요청이 오고 이를 감지한 Travis CI가 해당 프로젝트를 빌드한 상태
Step 3
Github Repo README.md 에 Travis CI에서 제공하는 build status 아이콘을 넣을 수 있다.
Travis CI References
- Travis CI 소개 #1
- Travis CI 의 연동과 사용
- Travis-CI 시작하기
- Django 프로젝트와 Travis CI 연동 + selenium
- Github에서 코드 커버리지를 보여주는 Coveralls
Conclusion
Git은 코드를 관리하기 위한 DVCS이다. Git을 이런 용도로만 제대로 사용해도 성공이지만, Git 과 함께 사용할 수 있는 서비스는 소개한 서비스 말고도 굉장히 많다.
Git 보다는 Github과 함께 사용할 수 있는 서비스라고 명하는 것이 더 정확할 수 있으나, Github의 root는 Git이니 Git 생태계라 정했다.
안 쓸 이유가 없는 서비스들이니 한 번쯤 사용해보는 것을 적극 추천한다.
'Dev Tools' 카테고리의 다른 글
[ELK] Log 분석을 위한 ELK 스택 만들기 (0) | 2017.05.24 |
---|---|
[Swagger] RESTful API 문서 만들기 feat. YAML (0) | 2017.04.12 |
[Atom/tab-to-spaces] tab vs space (0) | 2016.09.19 |
[SVN] svn checkout 에러 Store password unencrypted (yes/no) (0) | 2016.09.05 |
[Atom/sync-settings] Atom 아톰 동기화 설정 파일 백업 atom packages sync backup (0) | 2016.08.31 |