포스팅하는 걸 정말 귀찮아 하는 로딘군이지만 오늘의 발견은 기록으로 남겨 두고두고 잊지 않아야겠다는 필요성을 느껴 이에 몇 자 찌질거려봅니다. 혹시나 로딘군과 같은 캐삽질을 하는 불쌍한 이들이 이 포스팅으로 구제된다면 더할 나위 없겠군요.
(글이 쓸때없이 긴데... 가볍게 팁을 원하시는 분들은 파란색 글씨와 그림만 보셔도 될 듯 합니다.)
1.
처음 주제는 제목과는 달리 svn에 관련된 야그입니다(...ㅈㅅ)
svn에 move라는 커맨드가 있다는 사실을 알고 계십니까?
(http://svnbook.red-bean.com/en/1.1/re18.html)
이 녀석은 말그대로 파일을 옮겨주기 때문에 특정 파일을 다른 폴더로 옮기더라도 기존의 히스토리를 간직할 수 있는 장점이 있습니다. (물론 옮겼다는 명령 자체도 기록으로 남고요.)
헌데 TortoiseSVN... 소위 거북이 녀석에게는 이 메뉴가 없습니다...llorz
...해서 파일을 다른 경로로 옮길라치면 기존의 파일을 새 장소로 로컬 복사한 후 기존의 것은 svn delete, 새 장소로 복사된 녀석은 svn add를 하는 좆치않은 짓을 하곤 했답니다.
(물론 이 경우에는 히스토리가 옮겨가지 않지요...;ㅁ; <- 이게 크리티컬)
그러던 어느 날! 그러니깐 오늘(...) 발견해버린 것입니다!!!
저희 같은 경우 trac을 함께 쓰고 있는데 체인지셋 기록을 살펴보다보니 svn rename을 한 경우 기록이 남더란 말입죠!

증거 화면 (위험한 부분은 좀 가렸심... 어쩔 수 없잖아?)
쌔끈하게 이동이 되는군요!! 히스토리로 알흠답게 기록됩니다. 진작에 알았으면 져았잖아... 혹시 나만 몰랐던 거야? ;ㅁ;

대략 이런 느낌이죠.
2.
두번째 이야기야말로 본래 쓰려 했던 VS2005와 관련된 내용이 되겠습니다.
VS는 전통적으로 '클래스뷰'와 '파일 뷰'(지금은 '솔루션 탐색기'로 이름이 바껴버린...)의 두가지 뷰 기능을 지원하고 있는데요.
흔히들 클래스 뷰를 많이 쓰시는 것 같던데 전 꾸준히 솔루션 탐색기를 쓰고 있답니다.
그런데 프로젝트에 파일이 계속 쌓이다보면 슬슬 솔루션 탐색기에 스크롤 압박이 생긴단 말입죠.
그래서 대부분은 가상 폴더를 만들어서 사용하게 되는데요.
어느날은... 제가 만들어놓은 가상 폴더가 날라가 있는겁니다...llorz정확히는 그냥 가상 폴더가 날라갔다기보단 뭔가 설정이 바뀐 것처럼 보입니다.
이 상황에서 폴더를 생성하면 실제로 물리적인(좀 어폐가 있지만 이해의 편의를 위해 걍 이 표현으로 갑니다.) 폴더가 생겨버립니다. 그리고 폴더 상에는 있지만 프로젝트에 포함되어 있지 않는 파일이라면 정지 표시(...)을 붙인 채로 표기됩니다.

증거 화면 두번째
...해서 로컬의 녀석을 완죤히 다 날리고 새로 checkout을 받았더니... 정상이네?
(뭔가 찝찝했지만... 어러케든 해결됬으니 그냥 넘어갑니다...-_-)
그런데!! 이번엔 글케 해도 안대!! 티ㅏㅜ리ㅏ농ㄹㅈ
그리하여 미친듯이 검색을 해보니 언제부턴가 C# 등은 그렇게 물리적인 저장소와 동일한 폴더 구조를 솔루션 탐색기에서 보여준다고 합니다.
하지만... C++.Net은 기존처럼도 쓸 수 있다네? (그렇지 않다면 여태까지 제가 써왔을리가 없죠.)
근데... 어러케 돌아가는겨...llorz
...흠...음... 솔루션 탐색기를 유심히 살펴보자니 위쪽에 그동안 관심을 받지 못하고 있던 아이콘이 눈에 띄네요?
툴팁을 보자니... '속성', '모든 파일 표시', '새로 고침'. 게다가 가운데 녀석은 활성화 되어 있어!
그래서 녀석을... '모든 파일 표시'를 눌렀더니 두둥! 돌아왔구나... 가상 폴더 구조...;ㅁ;

이딴 아이콘... 눈에 안 띄어!! ;ㅁ;
...혹시나 당신도 이런 상황에 고생을 하고 계시진 않습니까?
이 글이 도움이 되었기를 기대하면서, 긴 푸념... 끝까지 읽어주셔서 감사하빈다[...]


댓글을 달아 주세요
svn을 쓰면서 필요했던 기능이군요(move) ^^
복사하고, 지우고, add하고했는데..
역시 그랬던 분이 더 말고도 계셨군요...;ㅁ;
이런..rename이었군요. (지우고 다시 만들고 있었다)
ㄳ
여기 또 있어...;ㅁ;
과연. 그렇군.
(그냥 동조하는 분위기에 휩쓸려)
언젠가 진심으로 이해할 날이 올꺼야...>_<
나둔데. rename 쓰면 되는군. --;;
C# 솔루션 탐색기에서 파일 지우면 진짜로도 지워. 물론 물어보지만.
으응. 그렇더군.
C++도 물어보는데 디폴드 선택이 예전처럼 프로젝트에서만 제거지요. :)
Alt+P, Alt+O 를 연속해서 눌러보세요 [...]
저도 이걸 알아차리기까지 한동안 좌절 했던 기억이.. OTL
무려 단축키까지!!!
...헤에, 또 뭔가 삽질하게되면 레비츠님한테 먼저 물어봐야게따[...]
폴더 구조 날라가면 그냥 프로젝트 파일 지우고 다시 받아서 작업하다 비쥬얼 어시스트의 h<->cpp 기능 사용하려고 Alt+O 누르다 발생한다는걸 깨달았.. [...]
마소가 미워요.. ㄱ-
TortoiseSVN에 Move 있습니다. repo-browser에서 드래그/드롭을 하면 Move가 되는데, 다이얼로그에서 뜨는 액션은 Add & Delete -_-; (한번 당했습니다.)
이거 말고, 그냥 탐색기에서 오른쪽 버튼으로 드래그 & 드롭해주면 메뉴가 뜬다고 하더군요. (메뉴얼에 나와있더군요.) 이게 제대로 된 Move액션인지는 모르겠습니다만 ...
rename으로 되는건 처음 알았네요. (혹시 내부적으로 rename과 move가 동일한 액션일지도 모르겠네요.)
그릏습니다. repo-browser에서 직관적으로 가능하긴 합니다. 하지만 글케하면 바로 커밋이 되기 때문에 그 체인지셋에서는 그 액션만 이뤄진다는 단점이 있습니다. 다른 작업들과 묶어서 하나의 체인지셋으로 기록을 남기고 싶을 때는 살짝 아쉽지요. (atomic commit의 취지와도 위배된다고 생각됩니다.)
오른 버튼을 이용한 드래그 & 드롭은 미처 생각을 못해봤네요!! 그건 나중에 테스트를 함 해봐야겠습니다.
svn의 내부 구현 상으로 rename은 move 루틴을 이용한답니다. (메뉴얼에서 나와있지요.)