Skip to content
isdnetworks
Go back

깨끗한 것과 최신인 것

인계 문서를 받아 작업을 시작했는데 한 저장소를 다른 저장소에 합치라는 내용이었다. 현재 상태는 워킹 트리가 깨끗하다고 문서에 적혀 있었다.

Table of contents

Open Table of contents

24개와 4,749개

그 저장소를 열어 추적 파일을 세어 보니 24개뿐이었고 전부 설정 파일이었다. 작업 공간이라서 코드가 없는 것이겠거니 하고 그대로 넘어갈 뻔했다.

확인차 다른 머신에 있는 같은 저장소의 클론을 조회하니 4,749개였다. 머신 셋의 현재 커밋을 나란히 대조해 보니 세 값이 전부 달랐다.

한 번도 안 받아 온 클론

문제의 머신에 있는 커밋의 날짜가 몇 달 전으로 찍혀 있었다. 그리고 결정적인 것을 확인했는데 원격에서 받아 온 이력을 담는 파일이 아예 없었다.

클론하고 그대로 방치한 것이라 작업 공간이 아니라 저장소의 낡은 사본이었다. 24개 파일은 그 시점의 저장소 내용이고 그 뒤에 코드가 들어온 것이다.

구조상 성립하지 않던 전제

한 가지를 더 확인해 보니 이 저장소는 설정을 자기 안에 내장하는 구조였다. 별도 작업 공간 디렉터리를 둘 구조가 아니라는 뜻이다.

결국 작업 공간이라는 전제 자체가 성립하지 않는 것이었다. 인계 문서에 적힌 조치는 그 전제 위에 세워져 있었다.

깨끗함의 정체

인계 문서에 적힌 워킹 트리가 깨끗하다는 관측 자체는 사실이었다. 실제로 상태를 확인해도 커밋할 것이 없다고 그대로 나온다.

문제는 그 깨끗함이 최신이라는 뜻은 아니라는 점이었다. 로컬이 아는 원격 참조가 같은 낡은 커밋을 가리키므로 차이가 없어서 깨끗해 보이는 것이고 로컬이 모르는 변경은 차이로도 안 나타난다.

전제가 무너진 승인

그래서 판별 방법을 새로 정했는데 상태가 깨끗한 것을 최신성의 근거로 삼지 않는다. 원격을 받아 온 이력이 있는지와 원격의 실제 최신 커밋이 무엇인지와 내 현재 커밋이 무엇인지 셋을 비교한다.

이 발견으로 작업이 일단 멈췄는데 전제는 유효하지만 조치가 무너졌기 때문이다. 승인은 그 조치의 전제 위에서 받은 것이므로 그대로 진행하지 않고 현황을 보고해 조치를 다시 정하기로 했다. 인계 문서는 쓴 시점의 관측이고 그 관측 자체는 틀리지 않았으므로 관측과 해석을 나눠서 해석만 검증하면 된다.

정리


Share this post on:

Previous Post
이미지 하나에 서빙 경로 셋
Next Post
이력이 없는 정상 흐름