셀카 이미지 6장 복구, gitignore 충돌 수정
목차
최근 배포 파이프라인에서 캐릭터 미디어 에셋이 누락되는 문제가 발견됐다. 원인은 두 가지가 함께 작용했다: (1) 실제 이미지 파일이 저장소에서 유실됨, (2) .gitignore의 패턴 충돌로 파일이 제대로 추적되지 않음. 이번 작업에서 두 문제를 동시에 해결했다.
이미지 파일 유실의 실마리
변경 파일을 보면, siwoo와 seorin 캐릭터의 셀카 이미지들이 새로 추가됐다:
- siwoo: anime-cafe-shy.jpg, anime-dog-walk.jpg, real-cafe-shy.jpg
- seorin: anime-composed.jpg, real-composed.jpg
이 파일들이 원래 있어야 했는데 저장소에서 빠져 있었다. 가장 큰 문제는 git이 이미지를 추적하지 않았다는 점이다. CI/CD 빌드 환경이나 배포 이후에 이 에셋들이 없으면, 화면이 깨지거나 사용자가 마주하는 경험이 급격히 떨어진다. 개발 로컬에서는 이미지가 있어서 문제를 못 느끼다가, 실제 배포 후에 발견되는 전형적인 "로컬에서는 잘 됨" 시나리오다.
gitignore 충돌 추적
커밋 메시지의 "8글자 씬키 충돌"은 흥미로운 표현인데, 이는 아마도 다음을 의미한다:
- .gitignore에서 짧은 패턴(*.jpg, media/ 등)과 더 긴 패턴이 겹치면서, 의도하지 않은 파일까지 제외됨
- 또는 파일 이름 매칭에서 정확히 8글자 단위로 잘려서 중복 처리됨
미디어 파일을 다루는 프로젝트에서는 이런 설정 실수가 정말 흔하다:
| 상황 | 원인 | 결과 |
|---|---|---|
광범위한 .gitignore |
*.jpg 같은 와일드카드 남용 |
필요한 에셋까지 제외 |
| 과거 패턴 정리 부족 | 누군가 추가했던 규칙 방치 | 점점 더 많은 파일 누락 |
| 경로 구체화 미흡 | build/ 는 맞는데 public/ 도 덮힘 |
예기치 않은 파일 손실 |
.gitignore는 "이 파일들은 버전 관리하지 말자"라는 의도인데, 종종 의도보다 훨씬 광범위하게 작동한다. 특히 여러 명이 함께 유지보수할 때는 누가 언제 어떤 패턴을 추가했는지 파악하기 어려워진다.
# 흔한 실수 예
*.jpg
*.png
# 더 나은 패턴
dist/
build/
node_modules/
!public/media/**/*.jpg
whitelisting(느낌표 !로 명시적 포함)을 사용하면, "public/media 안의 모든 jpg는 반드시 추적하세요"라고 명확하게 의도를 표현할 수 있다.
회고: 미디어 에셋과 코드의 동기화
이 경험을 통해 깨달은 몇 가지:
-
바이너리 에셋도 코드만큼 중요하다: 이미지나 동영상은 선택이 아닌 필수 요소다. 누락되면 기능 자체는 작동해도 사용자 경험은 완전히 깨진다.
-
.gitignore는 정기적으로 audit해야 한다: 설정 파일이라고 해서 한 번 작성하고 잊으면 안 된다. 팀 규모가 커질수록 누적된 패턴들이 의도를 벗어난다. 월 1-2회 정도 "이 규칙이 여전히 필요한가?"를 검토하는 시간이 도움된다.
-
로컬 테스트와 CI 환경의 괴리: 개발자 로컬에서는 모든 파일이 있어서 작동하는데, CI 빌드나 배포 이후에야 누락이 드러난다. 배포 전 "빌드 산출물에 정말 필요한 모든 에셋이 있는가?"를 체크하는 자동화된 테스트를 고려할 만하다.
-
명시적 규칙이 암묵적 규칙을 이긴다: git 추적 정책은 "우리가 명시적으로 포함한 것들"이 아니라 "제외 규칙에 걸리지 않은 것"으로 결정된다. 이는 역직관적이므로, whitelist 방식(포함하고 싶은 것을 명시)으로 전환하면 훨씬 안전하다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.