소스코드 원복(+ 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으로 바꾸셨으면 좋겠습니다.
꼭!!!