relocate는 서버의 주소가 변경되었을 때 사용하는 명령어이고
switch는 서버내의 다른 브랜치나 태그로 변경할 때 사용하는 명령어이다.
만약에 두가지 모두 변경이 되면 대책이 없는듯?

서버 이전시에도 경로를 일단 유지하고
그 이후에 디렉토리 구조를 변경해야지 무난하게 사람들의 이전을 시킬수 있을듯 하다.
그게 아니라면, 미리 다 서버에 올리고 한번에 옮기는 수 밖에 -_-



SVN 도움말 중 다음 항목 참고 
4.19.2. To Checkout or to Switch... 
4.27. Relocating a working copy



Posted by 구차니
만약에 2개의 장소에서 독립적인 지역 저장소(local repositories)를
하나의 중앙 서버에서 합쳐서 서비스를 하려고 한다는 상황에 적절한 내용

--- 2011.05.11 추가
병합된 내용을 보니 날짜 / 시간별로 revision이 맞물려 들어간다.
---

# svnadmin load --help
load: 사용법: svnadmin load REPOS_PATH

stdin 으로 'dumpfile' 형식의 스트림을 읽어들여, 새로운 리비젼을
저장소의 파일시스템으로 커밋합니다. 이전에 저장소가
비어있었다면, 기본적으로 그것의 UUID 가 스트림에 지정된
한가지로 변경될것입니다. 진행 피드백은 stdout 으로 전송됩니다.

옵션:
  -q [--quiet]             : stderr 에 대한 진행사항이 (오류에 한해서) 없습니다
  --ignore-uuid            : 스트림에 어떤 repos UUID가 발견되어도 무시합니다
  --force-uuid             : 만약 있다면, repos UUID 를 스트림에서 발견된 것에 설정합니다,
  --use-pre-commit-hook    : 리비전을 새로이 커밋하기 전 post-commit 훅을 호출합니다.
  --use-post-commit-hook   : 리비전을 새로이 커밋한 뒤 post-commit 훅을 호출합니다.
  --parent-dir ARG         : 저장소의 지정된 디렉토리에 로드합니다

# svnadmin dump --help
dump: 사용법: svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]

파일 시스템의 내용을 stdout으로 포터블한 형식의 'dumpfile'로 출력하며,
stderr로 피드백을 보냅니다. 리비젼 LOWER부터 UPPER까지 출력합니다.
주어진 리비젼이 없다면, 모든 리비젼 트리를 적재합니다. LOWER만 주어졌다면,
LOWER 값에 해당하는 리비전만 출력합니다.
--incremental 옵션을 사용한다면, 출력되는 첫번째 리비전에는 해당
리비전에서 바뀐 경로에 대한 것만 기술될 것이며, 그렇지 않은 경우에는
해당 리비전에 존재하는 모든 경로가 출력됩니다.
(이 옵션의 사용여부에 상관없이 출력되는 두번째 이후의 리비전에는 해당
리비전에 바뀐 내용이 있다면, 그 경로의 내용만 출력됩니다)

옵션:
  -r [--revision] ARG      : 리비젼 넘버 ARG ( 또는 X:Y 범위 )를 지정합니다
  --incremental            : incremental 적재를 합니다.
  --deltas                 : 적재된 결과물에 deltas를 사용합니다
  -q [--quiet]             : stderr 에 대한 진행사항이 (오류에 한해서) 없습니다

$ svnadmin dump repo1 > a1.d
$ svnadmin dump repo2 > a2.d
$ svnadmin create new
$ svn mkdir file:///.../new a1
$ svnadmin load new --parent-dir a1 < a1.d
$ svn mkdir file:///.../new a2
$ svnadmin load new --parent-dir a2 < a2.d 

[링크 : http://spyced.blogspot.com/2007/09/merging-two-subversion-repositories.html] 

간단하게 요약하자면
repo1 의 내용을 a1.d 에 
repo2 의 내용을 a2.d 에 파일로 저장하고

new라는 새로운 저장소를 만들어
그 안에 repo1은 a1 이라는 상위 디렉토리를 넣어주고
repo2는 a2 라는 상위 디렉토리를 넣어준다.

만약, 특별한 상위 디렉토리 없이 전부를 넣어주고 싶다면
--parent-dir /
이라고 해주면 목적지 저장소의 / 에 전부 넣어지게 된다.
(실험해보진 않았지만 parent는 저장소의 지정된 디렉토리 이므로,
엄밀하게는 미리 디렉토리를 생성해주고 그 안으로 넣어도록 지정이 가능할 것으로 보인다.)

[링크 : http://geekswithblogs.net/kariemali/archive/2009/06/02/how-to-merge-two-svn-repositories.aspx]
[링크 : http://stackoverflow.com/questions/267256/combining-multiple-svn-repositories-into-one]
Posted by 구차니
UFO:AI 번역을 하다보니 과거버전의 저장소와 지금의 새로운 버전의 저장소를 합치고 싶은 생각이 들었다.

지금의 버전과 딱히 동시에 관리해야 할 이유는 없지만, 과거 버전의 이력이 날아가는것도 아쉬워서
과거의 이력과 현재의 새로운 저장소를 합치는 방법에 대해서 고민을 했는데

원리적으로만 따지면, svnadmin dump를 통해 서브버전의 저장소를 전부 뱉어내고
뱉어낸 녀석을 합치고 싶은 저장소에 겹치게 하는 방법으로 생각이 된다.

일단 돌려봐야 알겠지만, 보기보다는 위험이 높아 보이는 작업 -_-


'프로그램 사용 > Version Control' 카테고리의 다른 글

SVN relocate / switch  (0) 2011.05.11
svnadmin dump / load를 이용한 저장소 합치기  (2) 2011.05.09
svn export 2가지 방법  (2) 2010.11.22
svn export 와 checkout의 차이점  (0) 2010.11.18
svn blame  (4) 2010.11.18
Posted by 구차니
svn export는 2가지 방법으로 가능하다.

1. 이미 받아놓은 svn working copy 에서 하기

    단, 이 경우 새로운 폴더를 생성하여 그 안에 export 해야 안전하다.
    (현재 디렉토리 이름 그대로 export 하므로 이름이 겹쳐진다.)


2. 서버에서 직접 받아 export 하기


Posted by 구차니

svn checkout은 svn을 통해서 개발용 소스트리를 받아오는데 쓰인다.
svn export는 svn을 통해서 배포용 소스트리를 받아오는데 쓰인다.

굳이 두개의 차이점을 말을 하자면
export는 .svn 폴더(관리용 정보)가 제외된 녀석이고
checkout은 .svn 폴더가 포함되어 있다는 차이이다.


export는 다른 저장소로 소스를 옮길때 사용한다고 한다.
Posted by 구차니


blame은 "비난하다 / 책임을 묻다" 라는 의미가 있는데
대부분은 비난하다로 이해를 하다보니 svn에서 모호한 용어중에 하나였다.
서브버전 책을 읽다보니, blame은 cvs의 annotate(주석을 달다) 에서 온 기능이라는데

정확하게는 아래와 같이
$ svn help blame
blame (praise, annotate, ann): 지정한 파일이나 URL의 내용의 수정내역을
각 라인별로 리비전과 작성자를 보여줍니다.
사용법: blame TARGET[@REV]...

  REV가 지정되면, 지정된 REV에서부터 찾아 보여줍니다.

라인별로 변경점을 리비전과 작성자와 함께 보여준다고 한다.
아무튼 blame의 어감이 부정적이라 praise(칭찬/찬양하다) 라고 한다는데
이래저래 기능에 비해서 적절하지 않은 용어인듯 -_-

'프로그램 사용 > Version Control' 카테고리의 다른 글

svn export 2가지 방법  (2) 2010.11.22
svn export 와 checkout의 차이점  (0) 2010.11.18
apache2 리눅스 계정으로 인증하기(PAM)  (0) 2010.11.11
Apache + SVN on Ubuntu 10.04  (0) 2010.11.03
visualSVN  (0) 2010.09.09
Posted by 구차니
우분투에서 apache2는 기본값으로 www-data:www-data 유저/그룹으로 실행된다.

보안이랑은 좀 거리가 멀어지는 느낌이지만, www-data 유저를 shadow 그룹으로 넣고
<Location /svn/repos1>
        DAV svn
        SVNPath /home/svn/repos1

        AuthPAM_Enabled on
        AuthType Basic
        AuthName "Subversion Repository"
        AuthUserFile /etc/shadow
        Require group www-data
        Require valid-user
</Location>
위와 같이 설정을 해주니, shadow의 로그인 정보를 이용하여 svn에 접근할수 있게 되었다.


'프로그램 사용 > Version Control' 카테고리의 다른 글

svn export 와 checkout의 차이점  (0) 2010.11.18
svn blame  (4) 2010.11.18
Apache + SVN on Ubuntu 10.04  (0) 2010.11.03
visualSVN  (0) 2010.09.09
TortoiseSVN tag/branch = copy  (2) 2010.04.30
Posted by 구차니
apache2를 설치했다면 추가적으로 "libapache2-svn" 패키지를 설치해준다.
그리고 /etc/apache2/httpd.conf 에 설정을 해주고 재시작하면 보인다!
(계정설정은 나중에 해보고 다시 수정)

--- 2010.11.09 추가
/home/svn
/home/svn/svn.passwd
/home/svn/repos1

식으로 파일및 디렉토리가 구성되어 있으며
htpasswd -c /home/svn/svn.passwd [username]
으로 암호파일을 생성한다.

계정설정은 아래의 링크에 나온대로 /etc/apache2/httpd.conf 에 설정을 해주면 된다.
<Location /svn/repos1>
    DAV svn
    SVNPath /home/svn/repos1

    AuthType Basic
    AuthName "Subversion Repository"
    AuthUserFile /home/svn/svn.passwd
    Require valid-user
</Location>

AuthType / AuthName / AuthUserFile 모두 설정되어야 하며
apache를 재시작하면(sudo service apache2 restart) 설정이 적용된다.
tortoiseSVN 이나 웹을 통해 접근시 암호를 물어보게 된다.

[링크 : http://nya.springnote.com/pages/3710557]

'프로그램 사용 > Version Control' 카테고리의 다른 글

svn blame  (4) 2010.11.18
apache2 리눅스 계정으로 인증하기(PAM)  (0) 2010.11.11
visualSVN  (0) 2010.09.09
TortoiseSVN tag/branch = copy  (2) 2010.04.30
cvs2svn 사용방법 2  (0) 2010.04.23
Posted by 구차니
visualSVN은 apache와 svn 서버를 통합한 녀석으로 윈도우용 버전에 free / enterprise 버전이 존재한다.
예전에 아파치 + SVN 통합은 먼가 복잡해서 포기했었는데 이녀석을 한번 시간내서 설치해 봐야겠다.


기능상의 제약이 있지만, 상업용도로도 Standard Edition을 무료로 사용이 가능하다는 것은 충분한 장점!

[링크 : http://www.phpk.org/archives/181]
[링크 : http://www.visualsvn.com/]

'프로그램 사용 > Version Control' 카테고리의 다른 글

apache2 리눅스 계정으로 인증하기(PAM)  (0) 2010.11.11
Apache + SVN on Ubuntu 10.04  (0) 2010.11.03
TortoiseSVN tag/branch = copy  (2) 2010.04.30
cvs2svn 사용방법 2  (0) 2010.04.23
svn / svnadmin 도움말  (0) 2010.04.23
Posted by 구차니

꼬부기에서 Tag/ Branch를 누르면 위와 같이 경고를 출력한다.
내가 사용중인 소스(Working copy)에 변경점이 있고, 서버와 버전이 동일하지 않기 때문에
변경점이 손실될수도 있다는 내용이다.

CVS에 비하면 부드러운 메시지이나(CVS는 서버와 workin copy가 동일하지 않으면 tag 자체를 시도할수 없다.)
어떤면에서는 CVS처럼 강인하게 변경점이 있으면 할수 없도록 하는 것도 나쁘진 않다고 생각된다.

하지만, 자유도 측면에서 서버내용을 독립적으로 분기할수 있다는 점은 상당한 매력이다.

'프로그램 사용 > Version Control' 카테고리의 다른 글

Apache + SVN on Ubuntu 10.04  (0) 2010.11.03
visualSVN  (0) 2010.09.09
cvs2svn 사용방법 2  (0) 2010.04.23
svn / svnadmin 도움말  (0) 2010.04.23
CVS / SVN 장단점, 차이점 비교  (6) 2010.04.07
Posted by 구차니