본문 바로가기

IT/Tool

svn 작업 오류 상황 #1

svn 은 동기화 되어 있지 않고 로컬의 수정본을 서버와 비교해서 올리는 형상관리툴입니다.

그래서인지 개발자의 호기심인지는 몰라도 웬지 실험이 하고 싶어집니다. ^^;

그래서 해봤습니다.  여러분들도 가능한지 불가능한지 맞춰보세요.

 

1. svn CheckOut 을 한 뒤 소스를 수정하다 갑자기 릴리즈할 일이 생겼다. 

작업 소스를 그대로 올리지는 못하고 현재 revision 까지를 릴리즈해야 한다.  작업 폴더 이름을 변경하고 다시 소스를 CheckOut 하여 내려받아 소스 중에 몇가지를 수정한 뒤 올린 뒤 InstallShield 에서 릴리즈했다. 그 뒤 릴리즈한 소스에서 수정한 걸 이전 작업 폴더에 업데이트한 뒤 릴리즈한 소스는 삭제하고 작업폴더 이름을 다시 원상복귀하고 올리려고 한다. 

   가능할까?

 

한번쯤은 생각해봤을 법한 꼼수이다.  이전 작업 소스에서 수정했다면 이미 그 부분은 소스에서 변경된 부분으로 인식된다. 특히 같은 부분을 비슷하게 수정했다면 그 부분은 업데이트에 반영되지 않는다. 수정했다고 인식하지 못한다.

정답은 불가능입니다.

이런 상황에 대한 해결책은 역시 소스 수정은 branch 로 작업할 수 밖에 없다. branch 로 작업 후 merge 를 통해 trunk 에 업데이트한다. 하지만 여간 귀찮은 게 아니다. 큰 기능의 수정이 아니면 그냥 trunk 에서 바로 작업해서 올리는 것이 속도도 빠르고 업무능률도 향상된다.

그리고 항상 고려해야 할 것..프로젝트 전체를 새로 받아야 할 일이 있다면  trunk 만 받는 것을 권장한다. branch 나 tag 를 많이 만든 상태에서는 각 폴더별로 모든 소스들이 만들어질 것이다.