Intellij에서
연동된 Subversion을 통해서
소스코드를 특정 저장소로
커밋할 때 발생하는 오류 중에
개인적으로 제일 짜증이 솟구치는 오류다.
일단 문제 발생 형태는 아래와 같다.
저장소에서
pom.xml 파일이 포함된
프로젝트를 checkout한다.
이 때 terminal에서
chekcout 한 후
Intellij에서 해당 프로젝트를
import 시킨다.
그리고 일부 소스코드를 수정 후
commit을 하는데
정상적으로 계정명이 포함된 상태로
checkout을 받았다면
인증 관련 오류가 발생하지 않는다.
svn checkout URL --username <USERNAME>
ex) svn chekcout http://www.opencloudengine.org/svn/flamingo --username peter
위와 같이 정확한 계정명으로 받으면 큰 문제가 없는데
터미널 상에서
계정 명을 잘못 입력한 상태로
비밀번호를 입력하고
프로젝트를 받게되면
프로젝트를 모두 다운 받고 나서 마지막에
계정이 없다고 나오고 checkout이 끝나게 된다.
이렇게 되면 문제가
이 프로젝트를 Intellij에서
커밋할 때
잘못 입력한 계정명으로 커밋을 하게 된다.
그러면 아래와 같은 오류가 반복된다.
svn: E170001: Commit failed
svn: E170001: MKACTIMITY of '/svn/flamingo/!svn/어쩌고저쩌고: authorization failed: Could not authenticate to server: rejected Basic challenge (url)
위와 같은 commit 오류가 발생하는데
잘못된 계정명이나
혹은 계정은 제대로 입력했는데
최소로 입력한 비번이 잘못 되었을 때
subversion에 config 옵션에
저장된 설정에 따라
계정/비번이 계속 저장되어
잘못된 정보로 커밋을 하게 되니
실패가 계속 뜰 수 밖에 없다.
이 문제는
Intellij에서 Setting - Version Control - Subversion 탭에서
Clear Auth Cache 버튼을
수천번 눌러도 변경되지 않는다.
Mac OS X Mavericks
Subversion 1.7 기준으로
이 문제의 해결 방법은 아래와 같다.
Intellij를 모두 종료한다.
Terminal에서 아래와 같이 입력한다.
# cd ~/
그리면 .subversion 폴더가 보인다.
안보이면 root 계정으로 로그인 필요.
만약 홈계정이나 직접 특정 위치에
.subversion을 지정했다면
거기로 이동해야 한다.
다시 아래 경로로 이동한다.
# cd .subversion
.subversion 폴더에 보면
config 파일이 있다.
이걸 vi로 연다.
# vi config
그러면 위와 같은 옵션 부분이 있는데
디폴트 값은
store-passwords = no가 주석처리 되어있으니
한번 입력한 계정과 비번이
계속 저장된다.
계정에 비번을 잘못입력했으니
이걸 저장하지 말고
Intellij 상태에서
커밋할 때 svn 계정과 비번을 입력하는
창을 뜨게하려면
일단 이 옵션을 위와 같이
주석처리를 제거 한다.
저장 후
Intellij를 실행한다.
Intellij에서 Setting - Version Control - Subversion 으로 이동 후
Use command line client: svn 옵션이
체크되어 있다.
이걸 체크해제 한다.
Clear Auth Cache 버튼 누를 필요도 없다.
어차피 먹히지 않는 기능이니...ㅡㅡ;
그리고 Apply 후 확인 버튼 누르고
VCS가 Refresh 된다.
잠시 뒤에
다시 커밋을 실행한다.
ㅡ_ㅡ..
사실 이 창을 띄우는걸 원했는데
구글링 해보면
죄다 Clear Auth Cache 버튼만 누르라는 답변 뿐이다.
subversion repository에서
생성된 프로젝트에서
관리자가 해당 계정명에 할당한
비번을 입력하면
정상적으로 commit이 된다.
저장 정보를 계속 저장해도 되고
이대로 써도 되고
나머지는 본인 취향에 따라..