통증: 초록 clone의 거짓
1 포인터≠바이너리. .gitattributes 이후 텍스트 포인터만 존재. 동일 사용자 맥락에서 git lfs pull 없으면 Xcode는 스텁만 봅니다.
2 자격 맥락 단절. Keychain·ssh-agent를 launchd·러너가 물려받지 못해 LFS가 조용히 실패합니다.
3 캐시 키와 병렬. 공유 LFS 루트는 한쪽이 지우고 다른 쪽이 컴파일 중이거나, 오래된 히트로 잘못된 버전이 주입됩니다.
4 순서 역전. 서브모듈 미완 상태의 거대 zip은 가변 경로와 경쟁해 재현성을 깨뜨립니다. Git+LFS→staging→검증→원자 순DAG가 필요합니다.
계층 트리아지
L0 ssh -o BatchMode=yes로 ingress를 동일 키로 검증하고 known_hosts·ControlMaster로 MITM을 할당량 오류와 분리합니다.
L1 git status와 blobless 첫 blob 지연을 읽습니다.
L2 git lfs ls-files·git lfs env를 CI 로그에 마스킹해 남깁니다.
L3 rsync/SFTP가 staging/에 매니페스트와 함께 들어가는지, inbox/ 직접 읽기를 금지하는지 확인합니다.
지표
clone 초·LFS 초·캐시 적중·재시도·검증 결과·APFS inode 여유를 기록합니다. LFS P95가 약 300초를 넘기면 작고 강하게 버전된 blob은 LFS에, 거대·약결합 묶음은 불변 이름으로 rsync로 보내 책임을 나누고, WAN 병렬과 대조해 좁은 uplink 경쟁을 시각화합니다.
도구체인 업그레이드마다 git lfs env 차이 한 장을 남기면 “커밋 없는 느려짐”을 추적하기 쉽습니다. 분기마다 호스팅 LFS 가격·스로틀을 재검토하세요.
초동 표
| 징후 | 근본 | 먼저 | 산출물 |
|---|---|---|---|
| 수백 바이트 | pull 누락 | git lfs pull·hooksPath | zip이 LFS 경로 덮어쓰기 금지 |
| 동일 브랜치 결손 | 캐시 경쟁 | 잡별 루트·SHA 키 | 임시 dir+원자 rename |
| CI 사용자만 | 자격 공백 | deploy key·기계 계정 | SFTP 업로드와 Git 읽기 분리 |
| 첫 빌드만 느림 | blobless 냉기 | 미러 예열·.git/lfs 캐시 | 거대 자산은 아티팩트+rsync |
7단계
- 시작에
whoami등과 마스킹env출력. - 서브모듈 SHA 고정.
git lfs install --local후 include pull.- 캐시는 패밀리 단위, 타 잡 루트 삭제 금지.
staging/에 쓰고SHA256SUMS로 중단.- 병행은 SFTP 매트릭스로 MaxStartups·inode 확인.
- 단계별 JSON 로그로 주간 리뷰.
예: checkout 후 명시 LFS
git clone --filter=blob:none --no-checkout "$REPO" workspace
cd workspace
git checkout "$SHA"
git lfs install --local
git lfs pull --include="Art,Models,ThirdParty/Binaries"법무가 분리를 우려해도 별 키·별 매니페스트면 감사는 강해집니다. 스캐너는 LFS egress를 일반 취급해 도메인을 허용 목록화합니다.
요약: 절차는 재현성을 높이지만 plist·광역 지연 운용 비용은 남습니다. 한계에 다다르면 SFTPMAC 관리형 ingress로 디렉터리 분리와 관측을 앞당기고 파이프라인 정의는 손에 쥡니다.
관련 읽기
무인 전송은 Sequoia 글, 무결성은 checksum 글, 병렬은 SFTP 글, 전환은 원자 릴리스 글 순서가 이해에 도움이 됩니다.
FAQ
모두 Git 밖으로?
강한 버전 관리의 중간 크기는 LFS, 거대·약결합은 아티팩트+rsync. 슬로건 대신 표로 결정합니다.
원격 Mac 이점
네이티브 툴체인과 APFS 의미가 맞아 서명·공증 단계의 조용한 손상을 줄입니다.
임대 시점
런북은 있는데 온콜이 줄지 않을 때. SLA 지향 운영에 가깝게 하되 소유권은 유지합니다.
