강의 내용 정리/오픈소스SW개발(11)
-
오픈소스 SW개발 (5), GitHub
GitHub 1. GitHub란? 1) GitHub란? 형상관리 툴인 Git 레포지토리를 지원하는 웹서비스 깃허브란 전세계적으로 널리 알려진 형상관리툴인 깃 저장소를 지원하는 웹서비스로 현재 많은 오픈소스가 깃허브를 통해서 관리되고 있고, 기업도 깃허브 엔터프라이즈를 통해서 많은 소프트웨어를 관리하고 있다. 이는 리포지토리를 생성해서 사용할 수 있다. 2) GitHub 특징 (1) Fork 오픈소스 툴을 개발하고 있는데 이에 기여하기 위해서는 여기에 commit하고 push할 수 있는 권한이 있어야한다. 이때 누군지 모르는 사람에게 commit, push의 권한을 주기 어렵기에 remote repository를 복제해서 해당 repository에서 commit, push를 할 수 있도록 한다. 이에 따라..
2022.04.14 -
오픈소스SW개발 (4), Git Advanced
Git Advanced 0. Git 기타 개념 HEAD: 현재 branch의 포인트 Index: staging area에 위치한 다음 commit snapshot이 예정된 것 Working Directory: 수정하고 있는 폴더 1) Git working flow 2) add와 commit과 관련된 간단한 flow 예시 (1) git init을 통해 깃 폴더를 생성한다. (2) git add를 통해 파일을 추가한다. (3) git commit을 통해 add로 추가한 파일을 커밋한다. 이때 HEAD는 commit한 것을 가리킨다. (4) 파일을 수정한다. 그러면 working directory 상에서만 파일이 수정된다. (5) git add 명령어를 사용하면 Index의 내용도 바뀐다. (6) git co..
2022.04.11 -
오픈소스 SW개발 (3) Git Branch
Git Branch 소프트웨어의 기능을 가지치면서 개발하기 위해 사용한다. 즉, 독립적인 개발을 위해 사용한다. 1. Git의 주요요소 - Snapshot: Commit을 통한 변경 사항 - Tag와 Branch: 특정한 commit을 가리킴 1) SnapShot - Commit을 할 때 작성한 변경 사항을 저장한다. - 내부적으로 트리 형태로 저장되고 blob이라는 형태로 관리된다. - 누가 저장했고, commit할 때 남긴 메세지도 저장한다. - Commit은 부모 자식관계를 가지지고 있어, 이전 Commit을 가리킨다. - 최초 Commit을 제외한 나머지는 모두 부모를 가리킨다. 2) Branch - 레포지터리 생성 시 디폴트 Branch가 생성됨(master) - git hub에서는 main으로..
2022.04.07 -
오픈소스 SW개발 (2) Git basic
Git basic 1. Version control system을 사용하지 않을 때 발생할 수 있는 문제점 1) 혼자서 프로젝트를 진행할 때 발생할 수 있는 문제점 - 파일의 버전을 바꾸고 싶을 때 - 하드디스크가 크러쉬가 일어날 때 등등 ->> 이러한 경우를 방지하기 위해 여러 파일을 만들어야한다. 2) 여러 사람이 프로젝트를 진행할 때 발생할 수 있는 문제점 - 누가 관리할 것인지 - 동시에 동일한 파일을 수정했을 때 어떻게 수정할 것인가 - 잘못 파일을 삭제할 때 어떻게 대응할 것인가 등등 ->> 예전에는 클라우드를 공동으로 사용하거나 이메일을 주고받음 등의 방법을 사용했다. 3) 오픈소스에서 발생하는 문제점 - 어느 누구라도 소스코드를 볼 수 있고, 임의적으로 관리할 수 있기에 이에 대한 관리가 ..
2022.03.18 -
오픈소스 SW개발 (1), Open Source Software
Open Source Software 1. 오픈소스 소프트웨어 기초 1) 오픈소스 소프트웨어란? 소스코드가 공개되어있는 소프트웨어를 의미한다. 즉 소프트웨어 및 소스코드를 제한해선 안되고 어느 누구라도 확인, 재배포, 수정 및 변경할 수 있는 권한이 있어야한다. 따라서 특정 인물이나 그룹을 차별할 수 없고, 특정 os나 기술 등에 종속되어도 안된다. 한마디로 어떤 제한도 걸어서는 안된다. 오픈 소프트웨어는 비용이 거의 없거나 아주 적게 들 수 있다. 이에 따라 유연하고 퀄리티나 호환성이 좋아지며 초기에는 의존성이 있을 수 있더라도 차차 없어진다는 장점이 있다. 하지만 일반적인 소프트웨어와는 다르게 어느 누군가가 소프트웨어에 대해 보증해주지 않고, 어떤 기업에서 동력을 주는 것이 아니라 확장 범위와 속도가..
2022.03.11