오픈소스SW 16

오픈소스SW_Github Actions

Django 프로젝트를 하면서 CD를 위해 Github Actions를 사용하기로 해 전 프로젝트에서 한번도 사용해본적이 없기에 공부할 겸 포스팅했다. Github Actions란? GitHub Actioins는 GitHub에서 제공하는 CI(Continuous Integration)/CD(Continuous Deployment)를 위한 서비스이다. GitHub Actions를 사용하면 Github repository에 어떤 이벤트가 발생했을 때 특정 작업이 일어나게 하거나 주기적으로 어떤 작업들을 반복해서 실행시킬 수도 있다. 즉, 특정 이벤트의 루틴을 만들어주는 것이다. 예를 들어 어떤 repository에 PR(Pull Request)를 생성하게 되면 Github Actions를 통해 해당 코드 테..

오픈소스SW 2023.01.21

오픈소스SW_Chapter12_고급 기능

refs 커밋은 고유의 SHA1 해시 값을 가지고 있는데 이는깃의 refs 목록으로 가지고 있는다. refs폴더는 .git 폴더에 있으며 refs폴더에는 다음과 같은 폴더들이 있다. show 명령어는 해시 값을 사용하여 커밋 정보를 확인할 수 있는데, 반대로 rev-parse 명령어로 포인터의 해시 값을 알 수도 있다. 예를 들어 브랜치는 커밋 해시 값을 가리키는 포인터이므로 브랜치 이름을 사용하여 참조하는 해시 값을 조회할 수 있다. 단, refs는 로컬 저장소에만 기록하므로 원격 저장소나 복제, 복사 등으로는 refs 기록을 옮길 수 없다. reflog 깃은 내부적으로 작업한 모든 HEAD와 브랜치 포인터를 기록하는데 이때 사용된 포인터들의 기록을 reflog라고 한다. reflog 기록은 reflo..

오픈소스SW 2022.12.08

오픈소스SW_Chapter11_서브모듈

대형 프로젝트 규모가 큰 프로젝트는 저장소 용량이 많이 필요하지만 단지 용량이 크기만 한 저장소는 비효율적이다. 필요에 맞게 작은 저장소로 분할하여 운영하는 것이 더 효율적이다. 깃은 이러한 방식을 지원하는데, 저장소의 분할 개념을 서브모듈이라 한다. 서브모듈은 저장소 하나가 다른 깃 저장소를 포함하는 형태를 의미한다. 보통 메인저장소는 부모 저장소를 분할 저장소는 자식 저장소를 의미한다. 부모 자식 관계로 분리된 로컬 저장소는 또다시 개별 원격 저장소와 연결되어있다. 실습을 위한 저장소 준비 서브모듈 추가 저장소를 모듈로 연결하려면 submodule 명령어를 사용해야 한다. git submodule add 원격저장소URL 폴더이름 서브 모듈로 저장소가 추가되면 메인 저장소는 서브 저장소를 서브 폴더 형..

오픈소스SW 2022.12.08

오픈소스SW_Chapter10_배포관리와 태그

태그 배포는 정리된 최종 결과물을 만드는 과정이며, 깃은 정리된 커밋을 배포할 수 있도록 특수한 포인터를 제공하는데 이를 태그(tag)라 한다.태그 포인터로 최종 배포한의 커밋을 구별할 수 있으며, 커밋 해시 값을 기준으로 생성된다. 당연히 중복 생성은 불가하다. 태그는 다음과 같이 사용한다. git tag [옵션] [버전] -l , --list : 태그 목록을 볼 수 있다. -a : Annotated -d : 태그 삭제 해당 커밋이 삭제되는 것이 아니라 태그만 삭제됨. 당연히 해당 태그는 재사용할 수 있다. 태그는 추가 정보를 보유하는지 여부에 따라 두가지로 구분할 수 있다. Annotated Annotated 태그를 생성하려면 tag 명령어 뒤에 -a 옵션을 사용한다. 일반적으로 사용하는 태그 방법으..

오픈소스SW 2022.12.07

오픈소스SW_Chapter09_복귀

복귀 깃에서 코드 작업을 되돌리는 방법은 크게 reset과 revert 두 가지로 나뉜다. reset 커밋을 기준으로 이전 코드로 되돌리는 방법으로 기록한 커밋을 취소한다. 이전 코드로 복귀하려면 복귀 시점을 알려 주어야 한다. git log를 통해 해시 값을 확인 가능, HAED 포인터를 이용하여 상대적 위치를 지정할 수도 있음 git reset [옵션] 커밋ID soft : 스테이지 영역을 포함한 상태로 복원 별도의 메시지가 출력되지 않음 복귀 시점까지의 커밋 이력이 사라짐 단순히 HEAD 위치를 이동시킴 mixed : 옵션을 지정하지 않으면 기본값인 mixed로 자동 선택 스테이지 상태를 제외하고 복원하기 때문에 Unstaged 상태가 되어 메시지가 빨간색으로 표시됨. 즉, 커밋을 위해선 add 명..

오픈소스SW 2022.12.05

오픈소스SW_Chpater08_병합과 충돌

1. 병합 브랜치를 생성하는 목적은 원본 코드에 영향을 주지 않고 분리하여 개발하기 위함이다. 독립된 브랜치에서 개발 작업이 끝나면 다시 원본 브랜치에 작업한 결과를 반영해야한다. 병합은 분리된 브랜치를 한 브랜치로 합치는 작업이다. 깃의 병합은 브랜치를 기준으로 실행한다.병합할 때는 상대적인 기준을 판별하는 알고리즘들이 존재하며 Fast-Forward 병합과 3-way 병합 방식을 제공한다. git merge 병합할 브랜치명 Fast-Forward 깃의 가장 간단한 브랜치 병합 방식으로 순차적 커밋에 맞추어 병합을 처리하는 방법이다. 혼자 개발할 때 주로 사용한다. 작업한 브랜치를 원본 브랜치에 병합할 때 작업한 브랜치의 시작 커밋을 원본 브랜치 이후에 커밋으로 가리킨다. 브랜치를 병합하려면 기준과 대..

오픈소스SW 2022.10.24

오픈소스SW_Chapter07_임시 처리

스태시 작업 브랜치를 변경하려면 워킹 디렉터리는 정리된 상태여야 한다. 즉 워킹 디렉터리에 작업 중인 내용이나 커밋되지 않은 변경 사항들이 남아있으면 브랜치를 변경할수 없다. 대신 현재 수정 작업을 멈추고, 다른 브랜치에 있는 코드를 수정하려면 스태시 기능을 사용할 수 있다. 스태시는 현재 워킹 디렉터리 내역을 별도의 스택 영역에 잠시 보관하라는 명령이다. 이는 브랜치를 이동할 때 작업 중인 내용 때문에 워킹 디렉터리가 충돌하는 것을 방지하는데 사용된다. 스태시 명령을 실행하면 현재 작업 중인 내용은 임시 저장되고, 수정 전 마지막 커밋 상태로 돌아간다. 즉, 이전 커밋 후 작업하지 않은 상태의 워킹 디렉터리가 된다. 실행법 git stash save "메시지" : 스태시 여러 개를 생성할 때 list ..

오픈소스SW 2022.10.24

오픈소스SW_Chapter05_서버

서버 저장소 서버 저장소는 다른 말로 원격(remote) 저장소라고 하며, 서버를 이용하면 코드를 안전하게 보관할 수 있다. 깃에서 서버 저장소는 로컬 저장소의 코드를 복제한 복사본이 저장되며, 서버에 있는 소스 코드는 다른 사람들과 공유하고 협업하여 개발을 진행할 수도 있다. 서버의 필요성 협업 저장소 깃은 여러 개발자와 협업하려고 탄생한 도구이다. 요즘 컴퓨터는 항상 인터넷에 접속되어 있으나 현재까지도 인터넷에 연결하여 원격으로 작업할 수 없는 개발 환경도 존재한다. 깃은 이 두 가지 환경을 고려하여 분산형 모델을 선택했다. 연속된 작업 원격 저장소가 있다면 시간과 장소에 상관없이 연속적으로 개발을 할 수 있다. 깃은 분산된 저장소 여러 개를 하나로 통합하고, 최신 코드를 배포한다. 서버 저장소는 여..

오픈소스SW 2022.10.10

오픈소스SW_Chapter04_커밋

개발자는 만일의 경우에 대비하여 중간에 코드 변경 과정을 기록하고 잘못된 동작을 발견했을 떄 특정 시점으로 되돌아 갈 수 있어야 개발에 불편함을 겪지 않는다. 깃은 커밋(commit)을 통해 개발 중인 코드의 이력을 만들 수 있다. 개발 과정 중에서 개발자가 커밋을 하면 사용자가 변경사항을 일일이 기억할 필요가 없고 원하는 프로젝트의 이전 시점으로 쉽게 되돌아 갈 수 있다. 파일 관리 방법 깃의 커밋은 새로 변경된 부분만 추출하여 저장한다. 파일 이름을 변경하지 않고도 하나의 파일 이름으로 관리가 가능하다. 즉, 커밋은 시간에 따라 변화되는 내용만 관리하고, 코드가 변화된 시간 순서에 따라서 영구적으로 저장한다. 파일 등록 취소 스테이지 등록하는 것과 반대 과정으로 unstage 상태로 변경하려면 삭제(..

오픈소스SW 2022.10.10

오픈소스SW_Chapter03_깃 시작

깃 저장소 깃 저장소를 레포지토리(repository)라고도 부르며 일반적으로 사용하는 폴더와 유사하다. 깃 저장소에는 이력 정보가 관리되며 깃은 작성된 소스 코드 파일의 모든 변경 사항을 관리한다. 깃 저장소와 폴더 일반 폴더와 깃 저장소는 유사하지만 내부적으로 구조가 다르다. 깃 저장소에는 별도의 숨겨진 영역(숨겨진 폴더)이 있는데, 여기에 VCS에 필요한 파일 변경 이력을 기록한다. 즉, 일반적인 폴더와 깃 저장소 차이점은 숨겨진 영역이 있는지의 여부이다. 초기화 깃 저장소를 생성하려면 먼저 초기화 작업이 필요한데, 여기서 초기화란 VCS 관리를 위한 숨겨진 영역을 생성하는 작업이다. 초기화를 하기위해서 터미널에 다음의 초기화 명령어를 입력해야한다. git init 경로명 숨겨진 폴더 깃 초기화를 ..

오픈소스SW 2022.10.10