# 리네임 안전 프로토콜 > **버전:** 2.0 > **용도:** 화수 변경/리넘버링 시 안전한 절차 --- ## 🚨 왜 리네임이 위험한가? ### 덮어쓰기 문제 ``` 시나리오: ch-030~060을 ch-031~061로 변경 ❌ 정순으로 하면: ch-030 → ch-031 (OK, ch-031 자리 비어있음) ch-031 → ch-032 (❌ ch-031은 이미 바뀐 ch-030!) → 원래 ch-031 데이터 손실! ✅ 역순으로 하면: ch-060 → ch-061 (OK) ch-059 → ch-060 (OK, ch-060 자리 비어있음) ... ch-030 → ch-031 (OK) → 안전! ``` --- ## 📋 리네임 유형 | 유형 | 방향 | 방법 | |------|------|------| | **삽입** | 번호 +1 | 역순 | | **삭제** | 번호 -1 | 정순 | | **분할** | 번호 +1 | 역순 | | **병합** | 번호 -1 | 정순 | --- ## 🔄 방법 1: 역순/정순 리네임 ### 삽입 시 (번호 +1) - 역순! ```bash # ch-029와 030 사이에 삽입 # → ch-030~060을 ch-031~061로 # 역순으로! (60부터 30까지) mv ch-060.md ch-061.md mv ch-059.md ch-060.md mv ch-058.md ch-059.md ... mv ch-030.md ch-031.md # 새 화 생성 # ch-030.md 작성 ``` ### 삭제 시 (번호 -1) - 정순! ```bash # ch-029 삭제 # → ch-030~060을 ch-029~059로 # ch-029 백업/삭제 mv ch-029.md _backup/ch-029.md # 정순으로! (30부터 60까지) mv ch-030.md ch-029.md mv ch-031.md ch-030.md ... mv ch-060.md ch-059.md ``` --- ## 🔄 방법 2: 2단계 리네임 (더 안전) ### 1단계: 임시 이름으로 ```bash # 모든 대상 파일을 임시 이름으로 mv ch-030.md ch-030-temp.md mv ch-031.md ch-031-temp.md mv ch-032.md ch-032-temp.md ... mv ch-060.md ch-060-temp.md ``` ### 2단계: 최종 이름으로 ```bash # 임시 이름에서 최종 이름으로 mv ch-030-temp.md ch-031.md mv ch-031-temp.md ch-032.md ... mv ch-060-temp.md ch-061.md ``` **장점:** 순서 상관없이 안전 **단점:** 두 번 작업 --- ## ✅ 리네임 체크리스트 ### 리네임 전 ``` - [ ] 영향 범위 분석 완료 - [ ] Git 현재 상태 커밋 (백업!) - [ ] 리네임 방향 결정 (역순/정순) - [ ] 대상 파일 목록 작성 ``` ### 리네임 중 ``` - [ ] 파일명 변경 (순서 주의!) - [ ] 헤더 화수 수정 # 2권 30화 → # 2권 31화 - [ ] 타임라인 확인 (변경 필요 시) ``` ### 리네임 후 ``` - [ ] 파일명 = 헤더 화수 일치 확인 - [ ] summary 해당 챕터 번호 수정 - [ ] plot 해당 챕터 번호 수정 - [ ] 타임라인 연속성 확인 - [ ] Git 커밋 ``` --- ## 📊 영향받는 파일 ### 챕터 파일 ``` 파일명: ch-XXX.md → ch-YYY.md 헤더: # X권 XXX화 → # X권 YYY화 ``` ### Summary 파일 ``` summary-001-030.md 내용: "### ch-030: 제목" → "### ch-031: 제목" 또는 summary 자체 재생성 ``` ### Plot 파일 ``` plot-master.md: "30화: 제목" → "31화: 제목" plot-026-030.md → plot-027-031.md (필요시) ``` --- ## 🔧 자동화 스크립트 예시 ### 삽입 (역순 리네임) ```bash #!/bin/bash # 삽입 위치 이후 번호 +1 START=30 END=60 for ((i=END; i>=START; i--)); do OLD=$(printf "ch-%03d.md" $i) NEW=$(printf "ch-%03d.md" $((i+1))) if [ -f "$OLD" ]; then mv "$OLD" "$NEW" echo "Renamed: $OLD → $NEW" fi done ``` ### 헤더 일괄 수정 ```bash #!/bin/bash # 헤더 화수 일괄 수정 for FILE in ch-*.md; do # 파일명에서 화수 추출 NUM=$(echo "$FILE" | grep -oP '\d+') NUM_CLEAN=$(echo $NUM | sed 's/^0*//') # 헤더 수정 (권 번호는 유지) sed -i "s/# \([0-9]*\)권 [0-9]*화:/# \1권 ${NUM_CLEAN}화:/" "$FILE" done ``` --- ## 🚫 리네임 금지사항 ``` ❌ 백업 없이 리네임 ❌ 순서 무시 (덮어쓰기 위험!) ❌ 헤더 수정 누락 ❌ summary/plot 수정 누락 ❌ Git 커밋 없이 종료 ``` --- ## 💡 팁 ### 대규모 리네임 시 ``` 1. 작은 범위로 테스트 먼저 2. Git으로 롤백 가능한 상태 유지 3. 2단계 방법 권장 (더 안전) 4. 리네임 후 즉시 검증 ``` ### 실수 발생 시 ``` git checkout -- . → 마지막 커밋 상태로 복구 ``` --- *리네임은 신중하게! 백업 필수, 순서 중요!*