Perforce의 Backout 기능

by Sophia Lee / 2015. 07. 03. [10:22]

넷텐션에서는 개발 프로젝트에서 소스 파일 관리를 위해 Perforce Helix를 사용하고 있습니다. Perforce는 유상 구매해야 하는 소스 컨트롤 소프트웨어입니다. 유상이니만큼 가격의 부담이 있지만 그만큼 제값을 합니다. GitHub처럼 부수적인 파일로 인해 폴더 크기가 비대해지지 않고, 파일 처리 속도도 빠릅니다.

Perforce에는 알게 모르게 깨알 같은 기능이 있는데요, 그 중에 하나가 Backout 기능입니다. Backout은 이미 submit 혹은 check in 한 것을 취소하는 기능인데요, 이미 submit 한 내역을 지우는 방식이 아니라, submit 하기 전의 상태로 다시 한번 submit을 하는 데 사용됩니다.

그런데 이 Backout 기능에는 흥미롭고 멋진 기능이 있는데요, 바로 submit을 한 이후의 다른 submit을 했던 것을 날려먹지 않으면서 특정 submit을 롤백시켜 버리는 기능입니다.

한 예를 들어 보겠습니다. 다음과 같은 함수가 있습니다.

  

 그런데 이 함수에 버그가 있습니다. 그래서 원인을 추적하기 위해 로그를 출력하는 루틴을 추가했습니다.

 

 그런데 이것을 오랫동안 submit을 안 하고 작업하니까 불안합니다. 백업을 하고 싶습니다. 그런데 기왕이면 Perforcesubmit하는 형태로 백업을 하고 싶습니다. 그래서 쿨하게(!) submit을 했습니다.

 

 코드를 아래와 같이 수정했습니다. 그리고 submit 했습니다.

 

 

 

, 드디어 버그를 찾았습니다! 문제의 라인을 삭제했습니다. 그리고 submit 했습니다.

 

 그런데, 앞서 submit한 것 즉 change 25683의 임시로 넣은 코드가 있습니다. 저것은 지우고 싶네요. Change 25683의 변화 내역(diff)를 열어서 하나 하나 수정하는 방법도 있지만, 이러한 경우 PerforceBackout으로 한큐에 해결할 수 있습니다.

Change 25683에 우클릭 후 Backout을 선택하면 뭔가가 수정된 채 check out 됩니다. Backout 실행 후 get latest version과 Resolve를 해주는 것 잊지 마시고요.

 

 Backout을 실행 후 만들어진 check out 된 파일에 대해 변화 내역(diff)를 열어보면, 놀랍게도 로그 코드를 추가한 이후의 수정사항 들이 모두 유지된 채로, 딱 로그 코드만 뿅 사라져 있습니다!

 

 자 이제 submit 고고고. 소스를 직접 수정하지 않고도 로그 코드가 사라졌습니다.

  

 Perforce는 이밖에도 많은 수의 브랜치(stream)을 관리하는데도 편리하고, 과거 파일을 빨리 얻는다던지, 오래된 파일이나 다른 폴더와의 통째 비교를 빠르게 보여주는 등 여러모로 편리합니다.

 돈을 주고 시간을 살 수 있는 방법이 있는데요, 좋은 개발 소프트웨어를 도입하는 것이 그 방법 중 하나죠. 프라우드넷도 서버 개발에 대해서 시간을 돈 주고 사는 좋은 방법이기도 하죠.

4. 개발 이야기