패키지 생성
R package를 위한 폴더 생성
usethis::create_package("todaysexample")- todaysexample 여기에 만들고 싶은 패키지 이름 작성
문서 작업을 위해 경로 설정
setwd("todaysexample")문서 작업(description 등 수정된 부분이 있으면 적용되는 구간)
devtools::document()- automatically generate Rd files in man/ and update the NAMESPACE file.
버전 관리?
description
Package: todaysexample
Title: What the Package Does (One Line, Title Case)
Version: 0.0.0.9000
Authors@R:
person("First", "Last", , "first.last@example.com", role = c("aut", "cre"))
Description: What the package does (one paragraph).
License: `use_mit_license()`, `use_gpl3_license()` or friends to pick a
license
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2패키지 버전 vs 수정 버전
major, minor에 따라 버전 수정
git 관리가 편한 이유 수정할때마다 업로드 해서 관리가 편해짐
git commit -m ‘수정한 내용이나 이름’ 이런식으로 커밋 하면 깃 자체에서 관리하면 되니까 편해짐.
MAJOR.MINOR.PATCH
- MAJOR: 호환성 깨뜨리는 변경 (backward incompatible changes)
- MINOR: 새로운 기능 추가 (호환성 유지)
- PATCH: 버그 수정, 작은 개선 (호환성 유지)
예:
- 1.0.0 → 첫 정식 릴리스
- 1.1.0 → 새로운 함수 추가
- 1.1.1 → 작은 버그 수정
패키지 폴더 안 R 폴더에 함수 작성
#' Say hello
#'
#' @param name A name
#' @export
hello <- function(name) {
paste("Hello", name)
}
#' Filter with dplyr
#'
#' @param data A dataframe
#' @return Filtered dataframe
#' @importFrom dplyr filter
#' @export
my_filter <- function(data) {
dplyr::filter(data, TRUE)
}export함수 내용 공개importFrom필요한 패키지 내에서 함수 하나만 가져오기(가볍게 만들기 위함)
git 배포하는 법
- git hub에 repository만들기
- r studio에서 tools>version control>projectsetup>version control system -> git 선택
- local과 git 연결
git remote add origin https://github.com/username/todaysexample.git
git branch -M main
git push -u origin main- r package 준비
- .Rbuildignore : README.Rmd, pkgdown 설정 등 빌드에 필요 없는 파일 제외
usethis::use_build_ignore("README.Rmd")- 라이선스:
usethis::use_mit_license("Your Name")- README.Rmd + 배지:
usethis::use_readme_rmd()- GitHub에 푸시
git add .
git commit -m "올리고 싶은 내용 작성 ->내용 나중에 가능"
git push origin main- 설치 방법 공유
# devtools 필요
install.packages("devtools")
# GitHub에서 설치
devtools::install_github("username/todaysexample")
# 패키지 로드
library(todaysexample)문서 사이트 배포
pkgdown으로 웹사이트 생성:
usethis::use_pkgdown()
pkgdown::build_site()
GitHub Pages로 자동 배포:
usethis::use_github_action("pkgdown")오픈 소스 말고 폐쇄형으로(회사 등) R 패키지를 관리할 때
GitHub.com 같은 외부 서비스에 올리면 안 됨 (기밀 코드 유출 위험)
- 사내 Git 서버 (GitLab CE, Gitea 등) → 내부망에서만 접근
- 공유폴더에 bare repo 만들어 원격 저장소로 활용
- 로컬 Git만 사용 → 개인 PC에서만 관리
- 배포는 내부 CRAN 레포(miniCRAN, Posit Package Manager) 로만 → 팀원들이 안전하게 설치
Git server 종류
- Gitea / Forgejo
- 특징: 아주 가볍고 단순한 Git 서버
- 장점
- 설치가 쉽고 빠름 (하루 만에도 운영 가능)
- 서버 자원(CPU, 메모리) 거의 안 씀 → 소규모 팀에 적합
- 기본 기능: 저장소 관리, 코드 리뷰, 이슈 관리, 간단한 CI 연동
- 단점
- 고급 기능(예: 대규모 CI/CD, 복잡한 권한 체계)은 제한적
- 비유: 경차 — 연비 좋고 관리 쉬움, 소규모 팀에 딱
- GitLab CE (Community Edition)
- 특징: 엔터프라이즈급, 기능이 매우 풍부한 Git 서버
- 장점
- CI/CD 파이프라인 내장 (테스트·배포 자동화 가능)
- 세밀한 권한 관리 (역할, 그룹, 프로젝트 단위 권한)
- 대규모 팀 협업 지원 (수백~수천 명)
- Wiki, 이슈 트래킹, 보안 스캐닝 등 통합 플랫폼 느낌
- 단점
- 설치·운영 복잡 (관리자 필요)
- 서버 자원 많이 필요 (CPU/메모리 2배 이상)
- 비유: 대형 SUV — 힘 세고 기능 많음, 대신 유지비가 듦
Git vs GitHub
- Git = 버전 관리 도구 (무료, 로컬/내부망에서 사용 가능)
- GitHub = Git 저장소를 인터넷에 공개/호스팅해주는 서비스
- 회사 기밀이라면 GitHub.com에는 절대 올리지 않음
- Git 자체는 업로드 없이도 로컬에서만 사용 가능
push의 개념
push= 로컬 저장소의 변경 이력 → 원격 저장소에 반영Git은 전체 파일을 매번 저장하는 게 아니라, 바뀐 부분(diff)만 기록- 기록은 .git/ 폴더 안에 모두 들어있음
기록/파일 확인 방법
git log- 변경된 부분 확인
git diff HEAD~1 HEAD- 과거 버전 파일 확인
git checkout <commit-id> -- file.R- 전체 되돌리기
git reset --hard <commit-id>