2025년도 2학기 오픈소스 소프트웨어
인공지능학부 224607 이수현
-
교과요목
- 오픈소스 소프트웨어 개발을 위한 기본 개념과 도구 학습
- 애자일 개발 방법론 학습
- 자기 주도적 학습 및 적응
-
수업평가
- 기말고사: 40
- 중간고사: 30
- 개별과제: 20
- 출석: 10
-
별도의 교제 없이 강의별 자료를 사전 배포
소프트웨어 저작권 소유자가 모든 사람에게 소스 코드를 게시, 사용, 복사, 수정 및 배포할 권리를 부여한 소프트웨어
-
Free Software
- 대표인물 - 리처드 스돌만 (Richard Stallman)
"Free software is a matter of liberty, not price."
- 자유와 윤리적 가치 강조
-
OpenSource Software
- 대표인물 - 에릭 레이먼트 (Eric S. Raymond)
"Given enough eyeballs, all bugs are shallow."
- 실용적, 기술적 우위 및 상업화 강조
오픈소스 소프트웨어의 사용, 복제, 수정, 배포 권한의 범위를 지정
라이선스마다 다른 권한의 범위
버전 관리 시스템의 목적은 파일의 변화를 시간 경과에 따라 추적하여, 언제든지 이전 작업 버전으로 쉽게 돌아갈 수 있도록 하는 것입니다.
주요 VCS 소프트웨어: CVS, SVN, Mercurial, Darcs, Git
VCS는 저장소 관리 방식에 따라 두가지로 나뉩니다.
-
중앙 집중식 VCS (Centralized VCS)
- 하나의 중앙 저장소만 존재하며 여러 사용자가 접근합니다.
- CVS, SVN
-
분산 VCS (Decentralized VCS)
- 모든 사용자가 로컬 저장소를 가지며, 별도의 원격 저장소를 사용합니다.
- GIT, Mercurial, Darcs
VCS의 Checkin(Commit), Checkout, Branching, Merging 등의 동작들은 파일의 이력을 관리하고, 여러 사람이 동시에 작업하는 것을 지원합니다.
Git은 리누스 토르발스 (Linus Torvalds)가 리눅스 커널 개발 협업을 위해 만든 분산 버전 관리 시스템(DVCS)입니다.
-
Git의 4개 구역
- Workspace: 사용자가 현재 파일을 작업하는 공간
- Index: 다음 커밋에 포함할 파일을 준비하는 영역
- Local Repository: 로컬에서 커밋된 파일들이 저장되는 곳
- Remote Repository: 로컬 저장소에서 푸시되어 올라간 파일들이 저장되는 원격 공간
-
Git 기본 명령어
- git clone: 원격 저장소의 내용을 로컬 저장소로 가져옵니다.
- git add: Workspace의 변경 사항을 Index에 추가합니다.
- git commit: Index 영역의 파일을 로컬 저장소에 기록합니다.
- git push: 로컬 저장소의 커밋을 원격 저장소에 올립니다.
- git fetch: 원격 저장소의 내용을 로컬 저장소로 가져옵니다.(작업 공간 병합 X)
- git merge: fetch로 가져온 내용을 로컬 저장소에 병합합니다.
- git pull: fetch와 merge를 한 번에 수행합니다.
- git diff: 현재 작업 공간, Index, HEAD 사이의 차이를 비교합니다.
-
Github
Git 기반의 소스코드 호스팅 플랫폼입니다. Git 저장소를 인터넷상에 저장하고 관리하는 서비스입니다.
-
fork
- 다른사람의 원격 저장소를 본인의 GitHub 계정으로 완전 복사
- 원본 저장소와 독립적인 새로운 원격 저장소가 본인 계정에 생성됩니다.
- 원본과 fork 저장소의 변경사항은 자동으로 반영되지 않습니다.
-
pull request
- fork 저장소에서 코드 수정 후, 원본 프로젝트에 병합을 요청하는 행위입니다.
- 원본 저장소 관리자가 코드를 검토하여, Merge하거나 코드 수정을 요청할 수 있습니다.
- git reset
커밋 이력을 특정 상태로 되돌리거나 인덱스와 작업 공간의 상태를 변경할 때 사용됩니다.
옵션으로 --soft, --mixed, --hard를 사용하여 reset할 범위를 다르게 할 수 있습니다.
- git blame
파일의 각 라인을 누가 언제 수정했는지 추적할 수 있습니다.
- git remote
원격 저장소를 관리하는 명령어입니다.
- git remote add: 새로운 원격 저장소를 추가합니다.
- git remote -v: 현재 연결된 원격 저장소의 목록과 URL을 보여줍니다.
- git remote update: 모든 원격 저장소의 최신 정보를 한 번에 가져옵니다.
- 텍스트 기반의 마크업 언어로 2004년 존 그루버에 의해 만들어졌습니다.
- 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능합니다.
- 마크다운 튜토리얼 사이트에서 마크다운 주요 문법(제목, 단락, 텍스트 속성, 링크...)을 사용해 볼 수 있습니다.