SVN2012. 6. 26. 13:08

SVN을 이용해서 커밋을 하다가 보면 아래와 같은 에러 메세지가 뜨면서

커밋이 안될 때가 있다.


 svn: Commit failed (details follow):

svn: File or directory 'main.svn' is out of date; try updating
svn: resource out of date; try updating

이것은 현재 SVN 서버에 저장된 소스의 버전과 내가 Local에서 작업한 소스의 버전이 맞지 않아 발생한다.

즉, Local에서 작업한 소스 버전이 SVN서버의 버전에 있는 소스보다 과거의 소스를 받아서 계속 작업을 해왔다면

소스 버전이 맞지 않아 새로 수정한 소스 조차도 날짜가 맞지 않는 다고 나온다.


이럴 때는 기존의 Local에 있는 소스를 다 날리고, 새로게 업데이트를 받아서

수정한 부분을 Merge해서 다시 빌드한 다음에 올려야 제대로 올라간다.

'SVN' 카테고리의 다른 글

맥용 SVN 서버 설치  (0) 2012.06.26
Subversion (SVN) 명령어  (0) 2012.06.18
svn add로 관리 대상 추가/delete 로 파일 제거/ rename 으로 파일 변경  (0) 2012.06.18
SVN 명령어  (0) 2012.06.18
Posted by 다오나무
SVN2012. 6. 26. 11:37

기본적으로 Mac OS X에는 Subversion 프로그램이 있다.

1.터미널에서 SVN 서버와 클라이언트 버젼을 확인해 보자

서버 : svnserve --version
클라이언트 svn --version

 




2. 소스 저장할 위치에 대해 폴더를 생성 하고 Repository 생성한다.

svnadmin create [경로]


실행화면


다음과 같이 폴더와 파일이 생성된다.



 3. SVN 로그인 계정 등록
[Repository 폴더]/conf/passwd 파일을 수정한다.


예) 아이디 : zang / 패스워드 : 1234 

 
4. SVN 환경 설정
[Repository 폴더]/conf/svnserve.conf 파일을 수정한다.


익명 사용자 접근 막기 (anon_access = none)
인증 사용자 쓰기 권한 (auth_access = write)
인증 데이터베이스는 passwd 사용 (password-db = passwd)




5. Mac에서 SVN 서버를 자동으로 실행하기 위한 스크립트 파일 만들어야 한다.
[참고] 직접 서버를 실행하는 명령어

svnserve -d --listen-port=3690 -r [Repository경로]


스크립트 파일을 만들어 명령어를 입력한다.



스크립트 파일 저장후 파일 권한 설정해준다.

chmod 755 [스크립트 파일 경로]



6. Mac에서 부팅시 자동으로 스크립트 실행하도록 설정한다.

[시스템 환경설정]-[사용자 및 그룹]-[로그인 항목]에서 하단의 + 버튼을 눌러서 방금전에 생성한 스크립트 파일을 선택하면 된다.




7. 설치된 SVN 서버에 기존 소스를 import 하기 


디렉토리 생성

svn mkdir svn://localhost/trunk
svn mkdir svn://localhost/branches
svn mkdir svn://localhost/tags 


오류가 다음처럼 나오면 export SVN_EDITOR=vi를 처리해준다. 

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found


export SVN_EDITOR=vi


실행하고 나면 vi창으로 넘어감.. -> esc키 -> :q! -> 엔터 -> c 
왜 이렇게 하는건지는.. 자세히 안봐서 아직 모르겠고 그냥 vi빠져 나가고 continue(C) 눌러주면 폴더 생성


디렉토리 삭제  

svn rm svn://localhost/trunk



프로젝트 Import 

  svn import --no-auto-props --no-ignore -m "test프로젝트 추가" /Volumes/data/workspace/test svn://localhost/trunk/test


--no-auto-props --no-ignore 옵션을 주면 바이너리 파일을 추가 할수 있음.
-m "메시지" SVN 기록 메시지 

 

프로젝트 export

  svn export svn://localhost/trunk/test

Posted by 다오나무
SVN2012. 6. 18. 10:13

[SVN] Subversion 명령들


 Subversion 에서 사용되는 기본적인 명령들을 알아보자.  IDE (통합 개발환경)을 사용하면 쉽게 사용할 수 
있는 기능들이지만 커맨드 사용법을 알아두면 유용하게 사용할 수 있다.  커맨드를 직접 사용해 보면 내부동작을 
좀 더 쉽게  이해할 수 있으며 특히 자동화 스크립트를 작성할 때 도움이 된다.  
(소스관리 프로젝트를 위해 svn 명령을 사용할 경우와 svn 자바 라이브러리를 다룰 때도 도움이 된다. )


다음과 같은 순서로 Subversion 사용방법을 알아보겠다. 
1 저장소 생성
2 프로젝트 생성
3 프로젝트 저장소에 임포트(import)
4 작업본(working copy)  내려받기(checkout) 
5 woking copy에 파일 추가(add)
6 로컬 수정사항 커밋(commit)
7 저장소 변경사항 업데이트 받기 (update) 
8 브랜치/태그 (저장소 파일 복사/이동)
9 저장소 파일 삭제 
10 working copy 정보 보기




1. 저장소(Repository) 생성
가장 먼저 해야할 일은 저장소를 생성하는 작업이다. 저장소 생성에 관련된 내용은 지난 포스팅을 참고하기 바란다. 
svnadmin create --fs-type fsfs  MyRepository





2.  프로젝트 생성
이제 저장소에서 관리할 프로젝트를 위한 최초 디렉토리 구조를 로컬상에 생성한다. 
다음과 같은 구조로 "문서관리 시스템"을 위한 디렉토리 구조를 생성하였다. 







3. 프로젝트 저장소에 임포트(import) 
이제 로컬에 생성한 프로젝트를 저장소로 옮기자. 이 작업은 공유를 위한 프로젝트 최초 기본파일을 구성하는 단계이다. 
아래 명령으로 로컬 프로젝트 파일을 저장소로 복사한다. 

 svn import  -m "First DMS Project Import"  ./dms

저장소에 프로젝트 파일들이 옮겨졌기 때문에, 로컬 상에 있는 프로젝트 파일들을 삭제하자. 
이제 저장소에 있는 파일들이 모든 공유 문서들의 원본이 되고, 변경이 추가될 때마다 그 이력이 버전별로 관리가 된다. 




4. 작업본(working copy) 내려받기(checkout)
여러 사람이 저장소에 접근하여 산출물을 공유할 수 있게 되었다. 저장소에 있는 프로젝트 파일들을 
로컬상에 먼저 내려 받아보자.  로컬상에 자신이 다루게 되는 프로젝트 파일들을 작업본(working copy) 이라고 한다. 
작업본 내 모든 디렉토리에는 숨김파일 .subversion 이 생성되며 디렉토리 내 파일들의 목록과 수정사항들이 관리된다. 

svn checkout svn://repository_ip_address/MyRepository/trunk dms 

※ svn 명령들은 -r (revision) 옵션을 주어 아래와 같이 특정 리비전의 파일들을 다운 받을 수 있다. 
svn checkout -r  7 svn://repository_ip_address/MyRepository/trunk dms




5. 작업본에 파일 추가 (add) 
내려받은 작업본을 기반으로 자신이 담당한 모듈을 개발해 나가면 된다.  
새로운 파일을 작업본에 추가하고 싶은 경우,  새로운 파일을 생성하는 것만으로는 되지 않는다. 
작업본 파일목록에 명시적으로 새로 생성한 파일을 번영해 주어야 한다. 다음과 같은 명령을 사용한다. 
svn add build.xml




6. 로컬 변경사항 커밋 (commit)
작업본에 대한 모든 수정사항은 커밋을 해야 저장소에 반영이 된다.  파일 하나하나를 수정할 때마다 
커밋을 하는 것은 좋은 방법이 아니다.  에러가 발생하는 파일들을 저장소에 반영하면 업데이트를 받은 다른 팀웍들의 
작업에도 영향을 주기 때문이다. 되도록이면 명확한 단위작업별로 구분하여 완전히 동작하는 수정사항만을 커밋하는
것이 좋다.  커밋을 할 때마다 -m 옵션으로 변경사항에 대한 메시지를 반드시 달아주어 변경에 대한 정보를 알수있게 하자
svn commit -m "Added build.xml ant file"




7 저장소 변경사항 업데이트 받기 (update) 
작업본 checkout 이후부터,  작업을 시작하기 전에 저장소 최신 변경사항을 update 받아 작업본을 최신버전으로
유지하는 것이 좋다. 저장소와 작업본 사이에 버전 차이가 커질 수록 나중에 commit이 충돌문제가 발생할 수 있기
때문이다.  다음 명령으로 저장송 변경사항을 작업본에 최신화시킨다. 
svn update




8 브랜치(branch)와 태그(tag) 
특정시점의 문서버전(예를 들어 1차 개발버전과 같은...)에 대한 복사본을 남겨두고 싶을 때 브랜치를  사용한다. 
브랜치를 사용하면 복사본이 생성되고,  이후 수정작업들은 다시 작업본에 계손 수정되어 나간다.   branch는 가지라는 뜻으로
현재 작업버전에 대해 분기점이 되는 버전이라는 의미를 갖는다.  태그는  브랜치와 비슷한 의미를 갖지만, 분기되어 
완전히 작업이 완료된 버전(첫번째 릴리지 버전과 같은...)이며  이름표를 달아서 알아보기 쉽게 표시를 한다. 
svn에서 브랜치와 태그를 생성하는 명령은 copy 로 동일하다.  태그 생성시는 t 옵션을 주어 이름표를 달아준다. 

브랜치 생성 
svn mkdir -m "Create branch directory" svn://repository_ip_address/MyRepository/branches
 

svn copy -m "Creating release branch for 1.0"  svn://repository_ip_address/MyRepository/trunk  \
                                                                          svn://repository_ip_address/MyRepositorybranches/RB-1.0


태그 생성 
 svn mkdir -m "Create branch directory" svn://repository_ip_address/MyRepository/tags
 

svn copy -m "Tag release 1.0.0" svn://repository_ip_address/MyRepository/branches/RB-1.0 
                                                    svn://repository_ip_address/MyRepository/tags/REL-1.0.0




9. 저장소 파일 삭제 (delete)
저장소에 있는 파일을 삭제하는 명령은 다음과 같다. 파일 삭제후 update 를 수행하면 작업본에도 반영이 된다. 
 
svn delete -m  "Remove branch 1.0" svn://repository_ip_address/MyRepository/branches/RB-1.0 




10. working copy 정보보기 
다음명령으로 작업본 리비전 정보와 저장소 루트, 최신 수정일 등의 정보를 확인할 수 있다. 
svn info 

Posted by 다오나무
SVN2012. 6. 18. 09:35

작업 디렉토리에 무턱대고 새로운 파일을 만든다고 해서 버전 관리 대상에 들어가지 않는다. 새로운 파일을 리비전에 

포함시키려면 다으모가 같이 svn add 명령을 사용해야 한다.

svn add test1.c test2.c


파일을 추가했다면 svn commit 을 통해 저장소에 반영해야 한다.



반대로 리비전에서 파일을 제거 하려면 

svn delete test1.c test2.c  

를 사용하고 위와 마찬가지고 commit 해야 한다. 


rename 으로 파일 명이나 디렉토리명 변경

svn rename test1.c main.c   // test1.c 를 main.c 로 변경


'SVN' 카테고리의 다른 글

SVN error : resource out of date; try updating 해결  (0) 2012.06.26
맥용 SVN 서버 설치  (0) 2012.06.26
Subversion (SVN) 명령어  (0) 2012.06.18
SVN 명령어  (0) 2012.06.18
Posted by 다오나무
SVN2012. 6. 18. 09:28

SVN 명령어

SVN client를 console 화면에서 사용하는 명령어에 대해 알아 봅시다.
console 화면에서도 update, commit, delete , checkout 등 모두 가능합니다.

1. check out
   소스를 repository에서 가져오기 위해서는 check out을 하여야 합니다.
    svn checkout --username svnID repository주소
   
    그 후 passoword를 입력하면 됩니다.

2. source commit
    서버상에 수정된 소스를 올리기 위해선
     svn commit 소스파일명

     만약 commit 시에
     "commit failed (details follows) 
     Could not external editor to fetch log message; consider setting $SVN_EDITOR 관련 된 에러가 발생한다면 아래와 같이 조치를 취한다.
  
 그후   계정의 home 디렉토리로 이동하여
     vi .profile
     export SVN_EDITOR=/usr/bin/vi
     저장 후 . ./.profile
     
     다시 svn commit을 하게 되면 vi 창이 열리면서 log를 쓰라고 나옵니다. log 작성후 파일 저장후 나가기 (:wq!) 하시면 commit 됩니다.

3. source update
    서버상에 버전업 된 소스를 local에 업데이트 하기 위해서
    svn update

4. 파일 추가시
    local에 있는 파일을 서버상에 append 할때
    svn add 소스파일명
    svn commit

5. 수정한 소스를 server 의 소스와 sync 할 경우
    svn revert 소스파일명

6. repository를 clean 할 경우
    svn cleanup
    svn delete 소스파일명
    svn commit

Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 21:09

svn merge 작업은 몇달에 한번씩만 하다보니 명령어를 까먹어서 매번 검색을 하는거 같다.
그냥 내 블로그에 정리를 해두자~

"1.1-stable" 이라는 브랜치의 작업 내용을 "trunk"에 반영(merge) 작업을 한다고 가정함. 

1. "1.1-stable"이 최초로 생성된 revision을 얻는다. 아래의 명령어를 이용하여 가장 밑에 로그 revision을 확인함.

$ svn log --stop-on-copy svn://www.test.com/test/branches/1.1-stable


2. 1에서 얻은 revision이 3000일 경우 "trunk"로 이동하여 아래의 명령어와 --dry-run 옵션을 추가로 이용하여 가상으로 merge 결과를 확인해본다. (--dry-run 옵션은 실제로 merge 작업을 하지 않고 merge 결과만 보여준다.)
아래의 명령은  revision 3000~최신 까지 "1.1-stable" 브랜치에서 작업된 내용을 "trunk"에 가상으로 반영해본다는 내용이다.

$ cd trunk
$ svn merge --dry-run -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./


3. 2의 결과를 보고 별다른 문제가 없으면 --dry-run을 제거하고 실제로 merge를 실행한다. 이때 소스코드에서 충돌이 발생하면 충돌난 부분을 찾아서 수정해준다.

$ svn merge -r3000:HEAD svn://www.test.com/test/branches/1.1-stable ./


4. merge가 완료된 trunk 코드를 diff 나 기타 방식대로 점검을 해본다.(귀찮거나 자신있으면 생략~ ^^)

$ svn diff | vi -


5. merge된 trunk를 commit 하여 작업을 완료한다. 

$ svn commit -m "브랜치 1.1-stable 작업 내역을 trunk에 반영함"



이제 merge된 코드를 빌드하여 테스트를 즐긴다~



Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 18:00

참고 : http://seino-takahiro.blogspot.com/2009/04/mac-os-x-105-leopard-svn.html


1. svn디렉토리생성

    svnadmin create /Users/seungbeomi/Sites/svn

    sudo chown -R www /Users/seungbeomi/Sites/svn


2. 체크아웃 테스트

    svn co file:///Users/seungbeomi/Sites/svn


3. svn 기본디렉토리생성(svn/repos)

    mkdir trunk branches tags


4. import

    svn import -m "init" . file:///Users/seungbeomi/Sites/svn


5. apache의 httpd.conf파일 수정

    open -a macvim /etc/apache2/httpd.conf


    LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so     # 모듈은 /usr/libexec/apache2/에 있다

    <Location /repos>
    DAV svn
    SVNPath /Users/seungbeomi/Sites/svn
    </Location>

    

6. apache기동

    시스템환경설정 > 공유 > 웹 공유


7. svn 접속

    http://localhost/repos/

'영삼이의 IT정보' 카테고리의 다른 글

이미지 URL을 UIImageView로 바로 뿌려주기  (0) 2012.06.13
svn merge 방법  (0) 2012.06.12
mac os x 에 apache module dav_svn 설치하기.  (0) 2012.06.12
맥용 SVN 서버 설치  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 14:13

나는 내가 할줄 아는 대부분의 것들도 인터넷으로 찾아서 하는 편인데 그 이유는

  • 내가 아는 것에서 한정짓지 않고 다른 사람이 어떻게 하고 있는지 확인하며
    • 내가 모르는 무엇을 추가로 좀더 파악하고
    • 최신 트렌드를 연마하기 위해서이다.
  • 또한 지식을 축적하여 KnowHow를 늘려가는 것보다는 KnowWhere 가 좀더 중요도가 높다고 판단하기 때문이다. (물론 KnowWhere 는 제대로된 bookmark가 필수 요소이다.) 

mac os x Leopard 에 dav_svn 을 설치하는 과정은 검색해 보았으나 쉽게 찾을 수는 없었다. 검색 결과(mac leopard dav_svn) 중 하단의 블로그 결과로 봐줄만 한게 있었으나 "고기를 잡는 과정은 있으나. 고기를 잡는 방법에 대한 과정" 이 기술되어 있지 않은듯 하여 직접 기술 하게 되었다.

Running a subversion server on my Mac Mini – 2010년 1월 3일

I recently installed a Mac Mini to be run as a media server.  Create a new file for dav_svn.conf. sudo vi /private/etc/apache2/extra/dav_svn.conf 

dav_svn 은 WebDAV 에 Subversion 을 융합시키기 위한 모듈이다. WebDAV 는 Web-based Distributed Authoring and Versioning 으로서 웹을 통한 웹을 기반으로 하는 공동 저작활동을 할 수 있도록 해 주는 http 서버의 모듈이다. SubVersion 은 CVS의 단점을 개선하여 나온 신 버전 관리 시스템으로 볼 수 있다. dav_svn 을 융합시키면 좋은 이유는 다음의 2가지 정도로 볼 수 있다.

  • 인터넷이 되는 곳이라면 subversion을 이용할 수 있다.
    • WebDAV가 http 서버의 모듈이기 때문에 http protocol을 사용하고 때문에 방화벽에 대부분 안전하다. 즉, 인터넷이 되는 환경이라면 일단 subversion 이 된다고 볼 수 있다.
  • 웹으로 versioning 한 내용을 살펴 볼 수 있다.

따라서 svn server 를 잘 운영하고 있다 하더라도 WebDAV 를 이용해서 한단계 업그레이드 시키는 것은 권할만한 사항이라고 생각한다.

사실 mac 이든 어디든 dav_svn 을 설정하는 것은 그다지 어려운 일이 아니다. 다만 mac은 다른 리눅스 진영과 달리 컴파일보다는 바이너리 설치에 사람들이 익숙하고 아래 순서에 나와 있지만 하필 httpd.conf 에 svn관련 설정만 딱 빠져 있기 때문에 컴파일을 다시 해야 하나? 등의 오해를 불러 일으킬 수 있다. 따라서 해당 모듈이 이미 mac에 있다는 사실만 알면 된다. 참고로 아래 내용은 httpd.conf 그리고 module 이 무엇인지 아는 정도 레벨에서 이해할 수 있도록 기술 되어 있다. 짧게나마 쓴다면 httpd.conf 는 apache 웹서버의 설정값이 기술되어 있고 module 은 apache 웹서버의 플러그인으로 볼 수 있다.

  1. 지금부터 할 대부분의 작업들이 admin 권한을 요구하므로 sudo 로 shell에게 모든 권한을 부여한다.
    • sudo bash
    • 자신 계정의 password 입력.
    • terminal (터미널) 앱으로 해야 하는 것은 당연.
  2. apache2 설정 directory 로 이동하여 mod_dav_svn 이 없음을 확인 
    • bash-3.2# cd /etc/apache2
      bash-3.2# grep -R ‘svn’ *
    • 위의 명령을 날려보면 conf 파일을 포함하여 svn관련 내용이 없다는 것을 알 수 있다.
  3. svn 관련 모듈이 mac의 어딘가에 파일로 존재함을 확인
    • nzMini:apache2 nzin4x$ cd /usr/libexec/apache2/
      nzMini:apache2 nzin4x$ ls -al *svn*
      -rwxr-xr-x  1 root  wheel   64896 Oct  5  2009 mod_authz_svn.so
      -rwxr-xr-x  1 root  wheel  429632 Oct  5  2009 mod_dav_svn.so
      nzMini:apache2 nzin4x$
    • /usr/libexec/apache2 안의 파일들이 httpd.conf 에서 LoadModule 로 호출할 수 있는 파일이다.
  4. 모듈을 이용할 수 있도록 apache가 컴파일 되어 있음을 확인
    • bash-3.2# httpd -l
      Compiled in modules:
        core.c
        prefork.c
        http_core.c
        mod_so.c
    • 위의 mod_so.c 때문에 동적으로 모듈을 로딩할 수 있다. 만약 mod_so 가 없다면 동적으로 모듈을 할 수 없으므로 필요한 모듈을 같이 다시 컴파일 해야 한다. 요즘은 대부분 기본으로 동적 모듈을 제공한다.
  5. httpd.conf 에 수동으로 추가 함
    • LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
      LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so

      LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
    • 적당한 위치에 추가하며 필자는 mod_dav_fs 위에다가 2줄을 추가 하였다.
  6. httpd.conf 에 관련 설정 모듈을 webdav 에 추가했음을 밝힘
    • # Distributed authoring and versioning (WebDAV), and svn
      Include /private/etc/apache2/extra/httpd-dav.conf
    • ,and svn 이라는 단순한 주석을 추가하였다. 현재까지의 과정은 apache가 svn 관련 module을 설치하는 과정이었고, 이제 이 모듈이 어떻게 동작할지에 대해서는 ./extra/http-dav.conf 에 추가할 것이다.
  7. /etc/apache2/conf/extra/httpd-dav.conf 수정
    • <Location "/svn">
          Dav svn
          SVNPath /Users/nzin4x/svnrepo
          AuthType Digest
          AuthName webhard
          AuthUserFile /etc/apache2/htpswd
          require valid-user
      </Location>
    • 위의 내용을 마지막 라인에 추가한다.
    • http://nz.pe.kr/svn 에 접속했을때 repository 인 /Users/nzin4x/svnrepo 에 접속(매핑)하라는 뜻이며 /etc/apache2/htpswd 에 만들어져있는 패스워드 정의 파일에 webhard realm (영역) 에 digest 방식으로 패스워드를 인증하여 사용하라는 뜻이다. 이 영역에 접근하기 위해서는 valid-user 여야 한다.
    • htdigest 를 이용해서 패스워드를 만드는 과정은 다음을 참고 한다. (http://httpd.apache.org/docs/2.0/programs/htdigest.html)
    • SVNPath 는 repository 가 하나일때 사용하는 것이고 여러개라면 SVNParentPath 등으로 상세하게 설정할 수 있다.
  8.   apachectl restart

좀 길게 적은감이 있다. 사실 중요한 것은 mac os x에는 dav_svn 을 위한 설정은 존재 하지 않지만 수동으로 추가 할 수 있도록 해당 모듈은 준비해 놓고 있다. 결국 위의 과정중 module 을 찾아내고 그것에 대한 설정을 추가하는 과정이 핵심이라고 할 수 있다.

'영삼이의 IT정보' 카테고리의 다른 글

svn merge 방법  (0) 2012.06.12
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi  (0) 2012.06.12
맥용 SVN 서버 설치  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
StoreKit  (0) 2012.06.10
Posted by 다오나무
영삼이의 IT정보2012. 6. 12. 10:12

기본적으로 Mac OS X에는 Subversion 프로그램이 있다.

1.터미널에서 SVN 서버와 클라이언트 버젼을 확인해 보자

서버 : svnserve --version
클라이언트 svn --version

 




2. 소스 저장할 위치에 대해 폴더를 생성 하고 Repository 생성한다.

svnadmin create [경로]


실행화면


다음과 같이 폴더와 파일이 생성된다.



 3. SVN 로그인 계정 등록
[Repository 폴더]/conf/passwd 파일을 수정한다.


예) 아이디 : zang / 패스워드 : 1234 

 
4. SVN 환경 설정
[Repository 폴더]/conf/svnserve.conf 파일을 수정한다.


익명 사용자 접근 막기 (anon_access = none)
인증 사용자 쓰기 권한 (auth_access = write)
인증 데이터베이스는 passwd 사용 (password-db = passwd)




5. Mac에서 SVN 서버를 자동으로 실행하기 위한 스크립트 파일 만들어야 한다.
[참고] 직접 서버를 실행하는 명령어

svnserve -d --listen-port=3690 -r [Repository경로]


스크립트 파일을 만들어 명령어를 입력한다.



스크립트 파일 저장후 파일 권한 설정해준다.

chmod 755 [스크립트 파일 경로]



6. Mac에서 부팅시 자동으로 스크립트 실행하도록 설정한다.

[시스템 환경설정]-[사용자 및 그룹]-[로그인 항목]에서 하단의 + 버튼을 눌러서 방금전에 생성한 스크립트 파일을 선택하면 된다.




7. 설치된 SVN 서버에 기존 소스를 import 하기 


디렉토리 생성

svn mkdir svn://localhost/trunk
svn mkdir svn://localhost/branches
svn mkdir svn://localhost/tags 


오류가 다음처럼 나오면 export SVN_EDITOR=vi를 처리해준다. 

svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found


export SVN_EDITOR=vi


실행하고 나면 vi창으로 넘어감.. -> esc키 -> :q! -> 엔터 -> c 
왜 이렇게 하는건지는.. 자세히 안봐서 아직 모르겠고 그냥 vi빠져 나가고 continue(C) 눌러주면 폴더 생성


디렉토리 삭제  

svn rm svn://localhost/trunk



프로젝트 Import 

  svn import --no-auto-props --no-ignore -m "test프로젝트 추가" /Volumes/data/workspace/test svn://localhost/trunk/test


--no-auto-props --no-ignore 옵션을 주면 바이너리 파일을 추가 할수 있음.
-m "메시지" SVN 기록 메시지 

 

프로젝트 export

  svn export svn://localhost/trunk/test

'영삼이의 IT정보' 카테고리의 다른 글

mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi  (0) 2012.06.12
mac os x 에 apache module dav_svn 설치하기.  (0) 2012.06.12
Tabbar 아이콘  (0) 2012.06.11
StoreKit  (0) 2012.06.10
iOS 키보드  (0) 2012.06.10
Posted by 다오나무
카테고리 없음2012. 3. 26. 11:35
얼마전부터 맥에서 아이폰앱 개발 공부를 시작했습니다..

프로젝트 진행을 해보신 분이라면 SVN이라는 놈을 아실겁니다. 
소스코드 버전 관리를 해주는 프로그램이죠.

Xcode에서는 Organizer에 기본으로 svn 관리 툴이 붙어있더군요. 
그래서 좀 써봤는데 버그가 좀 많고 왠지 허접한(!) 느낌이 들었습니다..

그래서 svn 클라이언트 프로그램 찾아보다가.. svnX라는 놈을 찾았습니다..

svnX는 아래 링크에서 받아보실 수 있습니다. (프리웨어)
http://code.google.com/p/svnx/downloads/list (현재 버전 1.3)

svnX를 설치하신 후.. 실행을 하면 저장소 창이 뜹니다.

Repositories는 실제 소스가 저장될 곳입니다. 서버가 될수도 있고 내 컴퓨터에 저장되는 경로일 수도 있습니다.

일단 서버쪽에 SVN Server 프로그램이 깔려있고, 사용자 계정이 등록돼있다는 가정 하에 
서버 저장소와 연결하는 방법을 소개해보겠습니다.

일단 저장소 창을 띄웁니다.
만약 창이 안떠있다면 "메뉴 -> Window -> Repositories"로 창을 띄웁니다.


오른쪽 중간 쯤에 있는 + 버튼을 누릅니다.



Name에 프로젝트 이름을 설정하고, 
Path에 서버 저장소 경로를 입력합니다.
User/Password 에는 SVN 계정의 사용자 이름과 비밀번호를 입력해 넣습니다.


입력을 마친 후 리스트에 해당 항목을 더블클릭하면 아래와 같이 저장소 창이 뜹니다.
이 리스트에 보이는 것은 서버에 있는 목록을 보여주는 것이므로.. 로컬에 저장하기 위해 Checkout을 눌러줍니다. 


서버의 소스를 저장할 로컬 경로를 설정한 후 Checkout을 눌러주면..



Working Copies 폴더에 test 프로젝트가 추가가 됐습니다.. 이렇게 되면 이제 준비는 끝난것입니다.


Working Copies에서 해당 항목을 더블클릭하면 Update, Commit 등을 할 수 있는 창이 뜹니다.

Finder에서 저장소 폴더에 임의의 소스 파일 2개를 추가했습니다.
위에 두 항목이 ? 로 뜨는 것은 SVN 관리 파일이 아니라는 것입니다. 
파일을 선택한 후 Add를 눌러주고 Commit 을 하면 서버로 해당 파일들이 올라갑니다.



Update 메뉴는 다른 사람이 소스를 수정해서 Commit 한 경우 내 컴퓨터에 있는 소스와 동기화를 시켜주는 작업을 합니다.
만약 내가 수정한 부분과 충돌이 일어나면 충돌 표시도 해주며, 
같은 파일을 수정했더라도 충돌부분이 없으면 자동으로 병합해주는 아주 똑똑한 놈이지요..

커밋을 한 후 한번 Refresh해준 다음, Repository를 눌러보시면 아래와 같이 버전이 생성됩니다.




버전 관리에 꼭 텍스트 파일 형식일 필요는 없습니다. 바이너리 파일도 버전 관리가 됩니다 (물론 비교는 힘들겠지만요..)

이런식으로 프로젝트 폴더 전체를 공유해서 여러명이서 개발을 하면 좋습니다..
옛날에 이런 버전 관리 툴이 없을때는 각자 개발하고 날잡하서 병합하고 그랬더랬지요.. 


 ※ 퍼가실땐 출처를 밝혀주세요. (http://shkam.tistory.com/)
Posted by 다오나무