svn+ssh:// 관련...
글쓴이: puser716 / 작성시간: 화, 2007/01/02 - 5:16오후
svn을 이용하려고 하는데 커밋하는 여러 방법 중 svn+ssh를 이용해서 하려고 하는데.
svn checkout svn+ssh://IP/home/svn/sample sample 이라고 명령을 내리면...
일단 계정에 관련된 암호를 넣으라고 하는데 넣게 되면
svn: Berkeley DB 오류입니다. 파일 시스템 /home/svn/sample/db, opening evironment
: 허가 거부됨
이라고 뜹니다.
일단 궁금한 거는 가이드에 보게 되면 .subversion 이라는 폴더가 각 계정 폴더에 생성이 된다고 하는데 전 일단 root 폴더에는 있는데 새로 생성한 계정의 폴더에는 없습니다. 이 것이 문제가 되는지와...
root에 있는 .subversion/config 파일을 수정해서 ssh = ssl -l 계정 이렇게 넣고 했는데 이렇게 넣는 것이 맞는 지....
마지막으로 sample 이라는 폴더 권한을 apache.apache로 되 있는 것과 775로 되는데 권한 설정은 잘 한 건지도 궁금합니다....
새해 복 많이 받으세요~
Forums:
svn+ssh에서
IP분분 형식이 ID@IP 형식일 것입니다.
그러면 svn 클라이언트는 ID에 해당하는 계정으로 sshd에 로그인 합니다.
그래서 해당 파일들에 대한 쓰기 권한이 있어야 합니다.
없으면 권한 에러가 나지요..
저같은 경우 그룹(svnusers)을 만들어서 그 그룹의 사용자들은 쓰기가 가능하게 만들어 놓습니다.
일단..
로그인까지의 과정은 정상적인데 그 뒤 결과가 리비젼이 안 됩니다..
물론 레파지토리의 권한 모두 apache로 되 있고 쓸 수 있도록 되 있습니다.
===========================
후회하지 말자~
svn+ssh:// 는 Apache 와 무관합니다.
svn+ssh:// 를 사용하는 경우,
Repository 에 apache 가 writing 할 수 있는 권한이 필요한게 아니라,
해당 Repository 를 사용하려는 사용자 계정이 Repository 에 writing 가능한 권한을 가져야 합니다.
svnusers 그룹을 생성해서 Repository 를 svnusers 소유로 바꾸고, 그룹 writing 권한을 주고,
svn Repository 를 사용하려는 계정을 모두 svnusers 그룹에 추가하는것이
실질적인 해결책입니다.
apache 를 이용한 인증과 svn+ssh:// 를 같이 사용하려는 경우에는
위 방법에 추가적으로
apache 를 svnusers 그룹에 추가하는 방법으로 해결해야겠죠.
저...
레파지토리 오너와 그룹 모두 apache 라는 사용자 그룹을 가지고 있습니다.
svnusers 라는 그룹을 굳이 만들지 않은 상태에서 apache라는 그룹이 이미 생성되 있는 데 이 걸 이용할 방법은 없는지 궁금합니다.
그리고 svnserve.conf 파일 안에 보면 authz라는 파일이 있는데 여기에 그룹 관련 정보를 설정하는 것도 있는 지요?
===========================
후회하지 말자~
만일 그러하시다면
apache 그룹에 현재 ID를 추가 시켜 주시고
리포지토리에 apache 그룹 쓰기권한을 설정해 주시면 됩니다.
이렇게 해 봤습니다.
/etc/group 파일을 열어서 apache:x:48:test_1,test_2 라고 입력하고 나서 svn co svn+ssh://test_1@IP/home/svn/sample sample 명령을 내리는 두 번의 암호를 묻고는 다음과 같은 결과를 얻었습니다.
svn: 'sample'는 이미 작업 사본에 있으며, 다른 URL 입니다. 라고 뜹니다...
휴...부탁 좀 드리겠습니다..
===========================
후회하지 말자~
svn co 를 실행한 디렉토리에...
svn co 를 실행한 디렉토리에 이전 시도의 결과인 sample 디렉토리가 있는것은 아닌지요?
checkout 되지 않더라도, sample 디렉토리 및 sample/.svn 디렉토리는 생성될테고..
이게 에러 메세지의 이유가 될 수 있습니다.
네~ 말씀하신 데로 였습니다.
이미 정상적으로 체크아웃 한 상태에서 할 경우 그 같은 에러는 아니구 결과가 나왔습니다.
처음 하는 거라 많은 것이 궁금합니다.
다 한 꺼번에 여쭤 보면 좋겠는데 하나 할 때 마다 문제가 생겨서...
그런데 URL이 뭔가요? 일반적으로 알고 있는 건 아닌 거 같구요~
그리고 하나 더 하다 보니 궁금 한 것이 있는데...
가이드를 보면
"여기서 주의할 점은 CVS는 revision을 파일 하나하나에 다 매기지만 Subversion은 파일에 revision을 매기지 않고 소스 수정, 파일 복사, 이동, 삭제 등을 하고 그때 한 커밋으로 revision을 매깁니다. 그래서 다른 파일들이라도 같은 revision 번호를 가지게 됩니다." 라는 구절이 있습니다.
수정을 하지 않았으면 커밋 할 이유가 없을 거 같은데 무슨 svn이 이득이 있는 지 모르겠네요...
===========================
후회하지 말자~
Re:
이것 역시 URL 입니다.
(일반적으로 알려진 URL 의 의미는 실제 URL 의 의미보다 좁습니다.)
그리고 두번째는,
기능적으로 "특정 시점" 으로 돌아가고자 할때 차이가 생깁니다.
예를들어, 어떤 프로그램의 1.0 릴리즈를 하고 나서
추가적으로 몇가지를 더 개발해서 repository 에 commit 한 이후에,
필요에 의해서 다시 1.0 릴리즈 한 시기의 전체 소스 코드를 얻고자 할 때,
파일 단위로 revision 이 메겨진다면 1.0 릴리즈를 하는 시기에
모든 파일의 파일별 revision 을 알아야 1.0 릴리즈 상태의 소스코드를 얻을 수 있지만,
(그래서 이런 경우에는 1.0 릴리즈 한 시기의 tag 를 사용하죠.
단지 1.0 릴리즈 이후에 tag 붙이는 것을 깜빡했다면....-_-; )
모든 파일들이 commit 될 때마다 새로 revision 이 메겨진다면
1.0 릴리즈시의 revision 을 체크아웃 하는 것으로 해결되죠.
(subversion 은 변경되지 않은 파일에 대해서는 commit 하지는 않습니다.
단지, 다른 파일들의 변경으로 인해 revision 이 올라가는 경우, 변경되지 않은 파일도
revision 넘버만을 올릴 뿐입니다.)
CVS 와 SVN 두 가지를 다 써 봐야 느낄 수 있는 차이입니다.
P.S.) 원 글과 크게 관련이 없는 질문사항의 경우는
글을 새로 쓰는것이 좋습니다.
답변 고맙습니다...
정말 둘 다 써보기 전 까지는 이해하기가....^^
고맙습니다..
좋은 하루 보내세요~
===========================
후회하지 말자~
댓글 달기