소스코드 원복(+ merge) ... 도와주세요
페이지 정보
본문
안녕들하세요 ! ㅋㄹㅇ에서 잘 이주하여 눈팅+댓글 놀이만하다.. 이렇게 첫 글을 쓰게 됐습니다.
제가 소스관리에 너무나도 무지하여 이렇게 질문 글 올립니다.
우선 개발/소스관리는 IntelliJ + SVN 환경입니다.
소스코드 리비전은 아래와 같습니다.
10 : 원본 trunk
11~20 : 기능#1 추가
21~30 : 기능#2 추가
최종작업디렉토리 : 30
이렇게 개발하면서 모두 commit 했는데, 문제는 branch를 따지 않고 하나의 trunk 에 그대로 commit 을 진행했습니다... ㅠㅠ
그런데 기능#1 추가가 취소되면서 11~20의 내용을 빼야되어서,
최종적인 형상은 10(원본)에 21~30의 내용만 반영되어야 하는데요.
IntelliJ + SVN 환경에서 어떻게 진행하는 것이 맞는지 모르겠습니다.
제가 처음 진행한 방식은,
1) 10 버전을 별도의 디렉토리에 checkout
2) 10 디렉토리에 21~30의 내용을 merge (30 디렉토리에서 21~30에서 추가/변경된 파일을 10 디렉토리에 overwrite)
그런데 이 형태가 최종 형태에는 부합하나 이걸 trunk에 commit 할 방법을 모르겠더라고요.
10 디렉토리는 svn 관리대상이 아니기 때문에 여기서 저장소에 바로 반영은 안되는 것으로 이해했습니다...
그래서 두번째로 진행해보려는 방식은,
1) 10 버전을 별도의 디렉토리에 checkout
2) 11~20 에서 추가된 파일은 30 디렉토리에서 삭제
3) 11~20 에서 변경된 파일은 10버전 파일을 30 디렉토리로 overwrite
4) 30 작업디렉토리에서 commit (31로 리비전 증가)
이렇게 진행하는 것이 맞을까요?
아니면 다른 방식으로 하는 것이 좋을지.. 선배님들의 말씀 부탁드립니다.
읽어주셔서 감사합니다.
cornflowerblue님의 댓글의 댓글
라맨땅님의 댓글
11~20에서 새롭게 추가된 파일은 파일 삭제 로그 남기며 정리하고, 기존 파일에 추가된 소스 코드는 코드 삭제 로그 남기고 삭제하는게, 나중을 위해서 좋지 않을까요??
첫 번째처럼 리비전 중간에 checkout 하고, 수정된 내용을 commit 하려면, 충돌 나기 때문에 결국 새로운 branch를 따야 합니다. 하나의 저장소로 관리하려면 두 번째처럼 최종 리비전에서 하나씩 제거하는 방법밖에 없을 껍니다.
리비전이 지저분해지는게 싫다면, 저장소를 새로 만들어서 깔끔하게 정리하면 될거구요..
cornflowerblue님의 댓글의 댓글
긴급휴무님의 댓글
커밋이력에서 11~20을 아예 없었던것처럼 하고 싶은신 걸까요?
cornflowerblue님의 댓글의 댓글
그렇게 하기 위해 svn 상에서 어떻게 진행해야할지 잘 모르겠던거고요 ㅎ
아빵쓰님의 댓글
기억이 안나서 도움을 못드려 죄송합니다.
다만 지금이라도 git으로 바꾸셨으면 좋겠습니다.
꼭!!!