icon안동민 개발노트

간단한 버전 관리 방법


 나이아가라 프로젝트에서 효과적인 버전 관리는 협업과 프로젝트 안정성을 위해 필수적입니다.

 이 절에서는 나이아가라 프로젝트의 버전 관리 방법과 주요 도구 사용법을 살펴보겠습니다.

버전 관리 시스템 개요

 Git

  • 분산형 버전 관리 시스템으로 소규모 팀이나 오픈 소스 프로젝트에 적합합니다.

 기본 명령어

git init  # 새 저장소 초기화
git add .  # 변경사항 스테이징
git commit -m "커밋 메시지"  # 변경사항 커밋
git push origin main  # 원격 저장소에 푸시

 Perforce

  • 중앙 집중식 버전 관리 시스템으로 대규모 팀과 대용량 파일 관리에 적합합니다.

 기본 명령어

p4 add  # 파일 추가
p4 edit  # 파일 체크아웃
p4 submit  # 변경사항 제출
p4 sync  # 최신 리비전으로 동기화

나이아가라 프로젝트에 버전 관리 적용

 Git 사용 시 .gitignore 설정

# Unreal Engine files
/Saved/
/Intermediate/
/DerivedDataCache/
/Build/
 
# Niagara specific
*.uasset
*.umap
*.locres
 
# 예외 처리 (버전 관리에 포함할 파일)
!*.uasset
!*.umap

 Perforce 사용 시 타입맵 설정

# Perforce typemap
binary+w //depot/....uasset
binary+w //depot/....umap

파티클 시스템 에셋의 버전 관리 특성

 나이아가라 시스템은 복잡한 바이너리 파일로 저장되므로 텍스트 기반 병합이 불가능합니다.

 따라서,

  1. 작은 단위로 자주 커밋
  2. 에셋 잠금 시스템 활용 (Perforce의 경우)
  3. 모듈화를 통한 충돌 최소화

병합 충돌 해결 방법

  1. 로컬 변경사항 백업
  2. 최신 버전 다운로드
  3. 수동으로 변경사항 재적용
  4. 테스트 후 커밋

 예시 (Git)

git stash  # 로컬 변경사항 임시 저장
git pull  # 최신 버전 가져오기
git stash pop  # 저장한 변경사항 적용
# 수동으로 충돌 해결
git add .
git commit -m "충돌 해결 및 변경사항 병합"

효과적인 브랜치 전략

 Git Flow 모델

  • main : 안정된 릴리스 버전
  • develop : 개발 중인 버전
  • feature/ : 새로운 기능 개발
  • release/ : 릴리스 준비
  • hotfix/ : 긴급 버그 수정

 나이아가라 프로젝트 적용 예시

git checkout -b feature/new-explosion-effect
# 새 폭발 효과 개발
git commit -m "Add new explosion effect"
git checkout develop
git merge feature/new-explosion-effect

대규모 팀에서의 버전 관리 워크플로우

  1. 작업 단위 분할 : 각 개발자가 독립적인 나이아가라 시스템 작업
  2. 코드 리뷰 : 주요 변경사항에 대한 팀 리뷰 진행
  3. 지속적 통합 (CI) : 자동화된 빌드 및 테스트 시스템 구축
  4. 문서화 : 각 커밋에 상세한 설명 추가

 예시 (Perforce)

p4 edit Effects/Explosion/NS_MassiveExplosion.uasset
# 변경 작업 수행
p4 submit -d "Update massive explosion effect: 
- Increased particle count
- Added new color gradient
- Optimized for better performance"

리비전 관리의 중요성

  1. 롤백 가능성 : 문제 발생 시 이전 버전으로 쉽게 되돌릴 수 있음
  2. 변경 이력 추적 : 누가, 언제, 무엇을 변경했는지 파악 가능
  3. 실험적 변경 용이 : 별도 브랜치에서 안전하게 실험 가능

버전 관리를 통한 효과적인 협업 방법

  1. 이슈 트래커 연동 : 커밋을 특정 이슈나 작업과 연결
  2. 풀 리퀘스트/머지 리퀘스트 활용 : 코드 리뷰 및 토론 진행
  3. 지속적인 커뮤니케이션 : 변경사항에 대한 팀 내 공유

 예시 (Git)

git commit -m "Fix particle jittering issue #123"
git push origin feature/smooth-particle-movement
# GitHub/GitLab에서 풀 리퀘스트 생성

버전 관리 시 주의사항 및 팁

 1. 대용량 파일 관리

  • Git LFS (Large File Storage) 사용
git lfs track "*.uasset"
git add .gitattributes

 2. 민감한 정보 제외

  • API 키, 비밀번호 등은 별도 설정 파일로 관리

 3. 정기적인 백업

  • 원격 저장소 외에도 별도 백업 유지

 4. 명확한 커밋 메시지

[FX] 폭발 이펙트 최적화
 
- 파티클 수 20% 감소
- GPU 시뮬레이션으로 전환
- LOD 시스템 구현

 5. 브랜치 관리

  • 사용이 끝난 브랜치는 정리
git branch -d feature/old-effect

일반적인 실수와 해결 방법

 1. 실수 : 대용량 파일 직접 커밋

  • 해결 : Git LFS 설정 후 이력 정리
git filter-branch --tree-filter 'rm -rf path/to/large/file' HEAD

 2. 실수 : 커밋 메시지 오타

  • 해결 : 최근 커밋 메시지 수정
git commit --amend -m "수정된 커밋 메시지"

 3. 실수 : 잘못된 브랜치에 커밋

  • 해결 : 커밋을 올바른 브랜치로 이동
git cherry-pick <commit-hash>

 4. 실수 : 중요 파일 삭제

  • 해결 : 삭제된 파일 복구
git checkout <commit-hash> -- path/to/deleted/file

 나이아가라 프로젝트의 효과적인 버전 관리는 팀의 생산성과 프로젝트의 안정성을 크게 향상시킵니다.

 Git이나 Perforce와 같은 버전 관리 시스템을 활용하여 변경 이력을 추적하고, 팀원 간 협업을 원활하게 할 수 있습니다.

 파티클 시스템 에셋의 특성을 고려한 전략적 접근이 필요하며, 대규모 팀에서는 체계적인 워크플로우와 명확한 커뮤니케이션이 중요합니다.

 버전 관리 시스템을 효과적으로 사용하면, 실험적인 변경을 안전하게 시도할 수 있고, 문제 발생 시 신속하게 이전 버전으로 롤백할 수 있습니다.

 또한 코드 리뷰와 지속적 통합을 통해 프로젝트의 전반적인 품질을 향상시킬 수 있습니다.

 주의해야 할 점들을 숙지하고 일반적인 실수들을 피하는 방법을 익히면 더욱 효율적인 버전 관리가 가능합니다.