TortoiseSVN의 Shelve기능으로 하던 일 안전하게 저장하기
TortoiseSVN의 shelve기능을 오늘 처음 알게 되었다. 그동안 svn은 git의 stash같은 기능이 없어서 아쉽게 생각했었는데, 혹시나 하고 검색해 보니 shelve라는 기능으로 나와 있었다. 이 기능이 왜 필요한지에 대해 TortoiseSVN 메뉴얼에 잘 나와 있어서 그 글을 한번 가져와 봤다.
“More often than wanted, it’s necessary to stop what you were working on and work on something else. For example a serious problem needs immediate dealing with and you have to stop working on the new feature. If possible, you should commit the changes you have done so far and then start working on the urgent issue, but often those changes would break the build or are just not ready for committing yet.
From 1st and 2nd paragraph on https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-shelving.html
So if you can’t commit your local changes yet, you have to put them aside while you’re working on the urgent issue. The shelving feature helps you do exactly that: you can store your local changes on a shelve, get your working copy in a clean state again and work on the issue. After you’re finished with the urgent issue and you’ve committed those changes, you can unshelve your shelved work and continue working on your previous task again.”
(해석) “생각보다 자주, 당신은 한창 작업하던 것을 멈추고, 또 다른 작업을 진행해야 할 때가 있다. 예를 들어, 심각한 문제가 발생해서 즉각적인 대응이 필요한 상황에서, 당신은 하고 있던 새 기능 개발 작업을 멈추고 그 상황에 대응 해야 한다. 가능하다면, 당신은 지금까지 해왔던 작업을 커밋하고, 급한 이슈를 처리할 수도 있지만 종종 커밋 준비가 되지 않았거나 커밋한다고 해도 빌드가 깨지는 경우가 있다.
그래서 만약 로컬 변경 사항을 커밋할 수 없다면, 우리는 다른 곳에서 넣어두고 급한 이슈를 처리해야 한다. Shelving 기능은 이러한 작업을 가능하게 해준다: 당신은 로컬 변경 사항을 shelve에 저장하여 working copy를 깨끗한 상태로 돌려 놓고 다른 이슈에 대해 작업을 할 수 있다. 급한 이슈가 모두 처리가 되었다면, 당신은 저장되었던 작업을 unshelve하여 꺼내고, 전에 작업하던 것을 이어서 계속 할 수 있다. “
개발 중에 자주 일어나는 상황에 대해 잘 설명해 놓은 글이다. 지금까지는 변경 사항에 관련된 파일들을 다른 폴더에 복사해 놓거나 아니면 그냥 모두 revert해버리고 처음부터 다시 하는 경우가 많았다. 다른 폴더에 복사를 한다 하더라도 변경 사항을 모두 찾는 수고스러움을 피할 수 없고, 그 와중에 많은 누락과 실수가 일어나기도 한다. 약간의 변경 사항은 그냥 다시 한번 하면 된다는 생각으로 revert하는 경우도 많은데, 같은 일을 두번하는 번거로움과 생산성 낭비가 안타까웠다. 이제 이러한 일들이 줄어 들 수 있을 것이고, 생산성의 향상이 기대된다. 그리고 로컬에서만 저장되기 때문에 저장소에는 영향이 없다.
TortoiseSVN 1.14.1 버전을 사용하였고, 기능의 사용은 그리 어렵지 않았다.
TortoiseSVN Context 메뉴에서 Shelve를 선택하고,
아래 팝업에서 shelve할 파일을 선택한 후, name과 log message를 넣고 Shelve를 클릭하면 된다. Shelve를 클릭하면, 로컬 변경 사항들은 모두 사라져 버리므로, 로컬 변경 사항을 유지하려면 Checkpoint를 클릭해야 한다.
저장했던 작업을 꺼내는 일은 Conext 메뉴 > Unshelve를 통해 가능하다.
감사합니다ㅠㅜ