프로젝트 환경설정#

이 가이드는 운영체제 수업을 위한 프로젝트 환경을 설정하는 방법을 자세히 설명합니다. 프로젝트를 시작하기 전에 아래 단계를 따라 환경을 설정해주세요.

리포 복제#

먼저, os-2024 저장소를 자신의 GitHub 계정으로 복제(Fork)합니다. 복제한 저장소의 URL은 https://github.com/your_github_id/os-2024.git와 같은 형식이 될 것입니다.

그 다음, 복제한 저장소를 로컬 컴퓨터로 클론합니다. 아래 명령을 터미널에서 실행하세요:

mkdir -p ~/workspace/projects \
    && git clone https://github.com/your_github_id/os-2024.git ~/workspace/projects/os-2024 \
    && cd ~/workspace/projects/os-2024
  • mkdir -p ~/workspace/projects: ~/workspace/projects 디렉토리를 생성합니다. 이 디렉토리는 프로젝트를 저장할 공간입니다.

  • git clone https://github.com/your_github_id/os-2024.git: 복제한 저장소를 로컬로 클론합니다. your_github_id 부분은 본인의 GitHub 아이디로 대체해주세요.

  • cd ~/workspace/projects/os-2024: 클론한 저장소의 디렉토리로 이동합니다.

가상 환경 생성 및 활성화#

다음으로, 프로젝트를 위한 Python 가상 환경을 생성하고 활성화합니다. 아래 명령을 실행하세요:

direnv allow

이 명령은 리포 디렉토리에 있는 .envrc 파일을 실행합니다. .envrc 파일은 프로젝트에 필요한 환경 변수를 설정하고, 가상 환경을 활성화합니다. 파일의 내용은 다음과 같습니다:

#!/usr/bin/env bash

export PYTHON_KEYRING_BACKEND="keyring.backends.null.Keyring"
export PROJECT_NAME="os2024"
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export PROJECT_ROOT

VIRTUAL_ENV="${WORKON_HOME}/${PROJECT_NAME}"
if [ -e "${VIRTUAL_ENV}/bin/activate" ]; then
    # shellcheck disable=SC1091
    source "${VIRTUAL_ENV}/bin/activate"
else
    python3 -m venv "${VIRTUAL_ENV}"
    # shellcheck disable=SC1091
    source "${VIRTUAL_ENV}/bin/activate"
    pip install --upgrade pip setuptools wheel
fi

이 스크립트는 다음과 같은 작업을 수행합니다:

  1. 필요한 환경 변수를 설정합니다.

  2. 프로젝트 이름(os2024)으로 Python 가상 환경을 생성합니다.

  3. 가상 환경을 활성화합니다.

  4. 가상 환경에 최신 버전의 pip, setuptools, wheel을 설치합니다.

direnv allow 명령을 실행하면, 이제 리포 디렉토리에 진입할 때마다 가상 환경이 자동으로 활성화됩니다.

프로젝트 의존성 설치#

프로젝트에 필요한 Python 패키지를 설치하기 위해 아래 명령을 실행합니다:

poetry install --with dev

이 명령은 pyproject.toml 파일에 정의된 모든 의존성 패키지를 설치합니다. --with dev 옵션은 개발에 필요한 패키지도 함께 설치합니다.

설치가 완료되면, 다음 명령을 실행하여 프로젝트가 제대로 설치되었는지 확인합니다:

os2024

이 명령은 프로젝트의 기본 스크립트를 실행합니다. 정상적으로 설치되었다면, 프로젝트 정보가 출력될 것입니다.

리포 동기화 및 프로젝트 브랜치 생성#

다음으로, 본인이 복제한 리포를 원본 리포(os-2024)와 동기화합니다. 이를 위해 원본 리포를 upstream으로 추가하고, 최신 변경사항을 가져옵니다:

git remote add upstream https://github.com/chu-aie/os-2024.git \
    && git fetch upstream
  • git remote add upstream https://github.com/chu-aie/os-2024.git: 원본 리포를 upstream이라는 이름으로 추가합니다.

  • git fetch upstream: upstream 리포의 최신 변경사항을 가져옵니다.

그런 다음, 프로젝트를 위한 새 브랜치를 생성합니다. 브랜치 이름은 your_github_id/project_patch_# 형식으로 짓습니다. 예를 들어, GitHub 아이디가 johndoe이고 첫 번째 프로젝트라면 브랜치 이름은 johndoe/project_patch_1이 됩니다. 아래 명령을 실행하세요:

git checkout -b your_github_id/project_patch_1 main

이 명령은 main 브랜치로부터 새 브랜치를 생성하고, 그 브랜치로 전환합니다.

Note

주의사항: 주별 과제의 경우 브랜치 이름에 주차 번호를 포함하는 것이 좋습니다. 예를 들어, 6주차 과제라면 브랜치 이름을 your_github_id/week06로 지정합니다:

git checkout -b your_github_id/week06 main

브랜치를 최근의 main 브랜치로 업데이트하려면 다음 명령을 실행하세요:

git checkout main \
    && git pull upstream main \
    && git rebase main your_github_id/project_patch_1

프로젝트 폴더 생성#

이제 프로젝트를 위한 폴더를 생성합니다. 템플릿 폴더를 복사하여 프로젝트 폴더를 생성하세요:

cp -r src/os2024/book/projects/template src/os2024/book/projects/your_github_id

이 명령은 src/os2024/book/projects/template 폴더를 src/os2024/book/projects/your_github_id 폴더로 복사합니다. your_github_id 부분은 본인의 GitHub 아이디로 대체해주세요.

그런 다음, src/os2024/book/projects/your_github_id/index.md 파일을 열어 프로젝트 설명을 작성합니다. 이 파일은 프로젝트의 메인 페이지 역할을 합니다. 파일을 열어 다음과 같이 수정하세요:

  1. 제목을 본인의 프로젝트 이름으로 변경합니다.

  2. 프로젝트 설명을 작성합니다. 프로젝트의 목적, 주요 기능, 사용 기술 등을 설명합니다.

# 프로젝트 제목

프로젝트 설명을 여기에 작성합니다. 프로젝트의 목적, 주요 기능, 사용 기술 등을 설명합니다.

## 소제목 추가

내용 작성

프로젝트 커밋#

프로젝트 폴더를 생성하고 설명을 작성했으면, 변경 사항을 커밋합니다:

git add src/os2024/book/projects/your_github_id \
    && git commit -m "feat: initialize project directory of your_github_id" \
    && git push --set-upstream origin your_github_id/project_patch_1

이 명령은 다음과 같은 작업을 수행합니다:

  1. src/os2024/book/projects/your_github_id 폴더를 Git 스테이징 영역에 추가합니다.

  2. “feat: initialize project directory of your_github_id”라는 메시지로 커밋을 생성합니다.

  3. 커밋을 your_github_id/project_patch_# 브랜치에 푸시합니다.

PR 생성#

GitHub에서 본인의 리포지토리로 이동하여 your_github_id/project_patch_# 브랜치를 선택합니다. 그런 다음, “Pull Request” 버튼을 클릭하여 새 PR을 생성합니다.

PR 제목은 “feat: Initialize project directory of your_github_id”로 설정하세요.

프로젝트 진행#

이제 프로젝트를 진행할 준비가 되었습니다. 프로젝트를 진행하면서 필요한 파일을 생성하고, 코드를 작성하세요.

주기적으로 다음 명령을 실행하여 변경 사항을 커밋하고, PR을 생성하세요:

git add . \
    && git commit -m "feat: update project progress by your_github_id" \
    && git push origin your_github_id/project_patch_1 \
    && gh pr create --title "feat: Update project progress by your_github_id" --body "This PR updates project progress by your_github_id"

이 명령은 다음과 같은 작업을 수행합니다:

  1. 모든 변경 사항을 Git 스테이징 영역에 추가합니다.

  2. “feat: update project progress by your_github_id”라는 메시지로 커밋을 생성합니다.

  3. 커밋을 your_github_id/project_patch_# 브랜치에 푸시합니다.

  4. “feat: Update project progress by your_github_id”라는 제목과 “This PR updates project progress by your_github_id”라는 내용으로 새 PR을 생성합니다.

프로젝트 완료#

프로젝트를 완료했으면, 마지막으로 다음 명령을 실행하여 변경 사항을 커밋하고, 최종 PR을 생성합니다:

git add . \
    && git commit -m "feat: complete project by your_github_id" \
    && git push origin your_github_id/project_patch_1 \
    && gh pr create --title "feat: Complete project by your_github_id" --body "This PR completes project by your_github_id"

이 명령은 앞서 설명한 것과 유사한 작업을 수행하지만, 커밋 메시지와 PR 제목/내용이 프로젝트 완료를 나타낸다는 점이 다릅니다.

이상으로 프로젝트 환경설정 가이드를 마칩니다. 프로젝트를 즐겁게 진행하시기 바랍니다!