subversion에서 잘못 commit한 소스 버전을 제거하기..
글쓴이: choco6 / 작성시간: 금, 2004/11/12 - 8:53오후
회사에서 업무용으로 소스 버전 관리툴로 subversion을 쓰고 있습니다.
제가 담당하는 제품은 아니지만 분석용도로 소스 저장소에 release용으로 저장된 소스를 check-out 받아서 디버깅용 매크로 문을 모두 열어 두고 공부하고 있었습니다..
더불어 제가 개발하고 있던 제품의 소스도 check-out 받아서 수정하고 있던 참이었죠..
그런데 제가 부주의한 바람에 제가 담당하는 소스를 commit한다는게 그만 디렉토리를 잘못 선택해서 제가 담당하지 않은 제품의 release 소스를 디버깅용 매크로를 모두 열어둔 채로 commit하고 말았습니다. 그것도 제가 담당하는 소스의 수정 사항을 로그로 잔뜩 기록한 채 말입니다. T.T
소스를 commit하고 나서야 제가 엉뚱한 프로젝트의 소스를 commit했다는걸 깨달았지만 이미 늦어 버렸습니다. 하늘이 노랗더군요...
그래서 해당 제품의 개발자들에게 양해를 구하고 소스 저장소에 제가 잘못 commit한 버전을 삭제하고 싶은데 subversion에서 어떻게 해야하는지요... svnadmin help로 찾아보았지만 보이지 않더군요.. 여러분의 조언 부탁드립니다.
Forums:
subversion에서 roll back이 있는지는 모르겠는데요.
subversion에서 roll back이 있는지는 모르겠는데요.
대신 이렇게 하면 어떨까요? commit 되었으면 diff을 뜰 수 있습니다.
그럼 그 diff로 그 이전 소스로 복구해서 다시 commit 하는 겁니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
네.. 저도 그 생각을 하긴 했는데.. release 트리의 버전과 로그
네.. 저도 그 생각을 하긴 했는데.. release 트리의 버전과 로그를 깔끔하게 관리하기 위해서 잘못 commit된 버전 자체를 삭제하려고 한 것입니다.
subversion에 그런 정 없다면 그 방법밖엔 없지만요..T.T
고전적인 방법 & 늦은 답변?
지나가다 발견해서 적습니다.
저같은 경우 잘못된 리비전까지 dump 한 후 다시 load 하는 방식으로 하고있습니다.
(단점: 리비전 & 용량 이 높아질수록 작업 시같이 기하급수적으로 증가)
svn merge 명령을 쓰되 revision을
svn merge 명령을 쓰되 revision을 역으로 해주면 바로 전 버전의 소스로 돌릴 수 있죠.
전 말씀하신 것처럼 commit 내용 자체까지 되돌리는 건 개인적으로 좋아하지 않습니다.
실수 역시 log로 남아서 더 이상의 실수가 없도록 해야 된다는 입장이라...
그리고 그 방법이 svnadmin까지 써야하는 거면, 다른 실수도 동반될 위험이 있진 않을까요?
그나저나
답은 과거버전에서 branch을 생성후 현재 branch은 버리고 새로 분리생성한 것을 root로 잡는게 답일 듯.
revision 삭제는 가능하지만 저도 비추합니다.
CVS나 SVN처럼 비동기식 형상관리 시스템에서 check out을 왜 사용하는지는 의문이군요.
VSS같이 비동기방식의 형상관리가 기능을 갖추지 못했을 때나 사용하던 기능이 아닙니까?
다른사람이 편집불가하게 하고 싶으면 lock하면 되는 거구요.
check in/out 기능은 쓰지 마시고
sync -> merge 사용에 중점을.
branch도 필수로 사용하시기 바랍니다.
실수로 올린걸 버전관리해야 한다는건 말이 안된다고
실수로 올린걸 버전관리해야 한다는건 말이 안된다고 보여집니다.
중간에 바꾸려는것도 아니고 ..
그런것도 버전관리에 포함되어야 한다는 논리는 잘못된거 같습니다.
그런 면에서는 Git이 좋군요.
댓글 달기