프로그램 사용/eclipse2014. 5. 18. 18:55
sublclipse와 subversive는 별반 차이가 없어 보이나..
내부적으로 많이 다른것 같은 느낌...?


일단 subversive는 subclipse에서 JavaHL을 통해 Native하게 C언어를 끌어와서 하는것 같고
그 기반으로 JavaHL(High Language) / JNA(Java Native Access)를 이용하는 것으로 생각된다.

음.. subclipse와 subversive의 외관상의 차이는...
subversive 에는 단축키가 할당되고
subclipse 에는 단축키가 없다는 것과

checkout 시에 미묘한 차이가 있다는 것 정도?

subclipse의 단축키가 없는 모습


subversive의 단축키 모습. 그리고 아이콘도 촘촘히 존재한다.


아무트 설치과정은
Subversive 설치 후


리부팅시에 맞는 버전에 따라 (귀찮으니 그냥 JavaHL 32bit/64bit로 하면 됨) 설치한다.


[링크 : http://subclipse.tigris.org/wiki/JavaHL] JavaHL
[링크 : http://en.wikipedia.org/wiki/Java_Native_Access] JNA
[링크 : http://www.eclipseonetips.com/.../eclipse-shortcuts-for-common-svn-commands/]  이클립스 단축키 설정
[링크 : http://www.eclipse.org/subversive/index.php] subvesive
[링크 : http://stackoverflow.com/questions/553133/subclipse-with-svnkit-adapter ] SVNKit Connector
Posted by 구차니
특정 파일을 선택한 후 우클릭 - TortoiseSVN - Properties에서
Add Property를 하면 아래의 창이 뜨고 원하는 속성을 추가하면 된다.



 [링크 : http://johnbokma.com/mexit/2008/09/30/subversion-svn-keywords-property.html]

---
2012.03.23 추가
소스에서 $Rev$를 추가하고
위의 과정을 통해 snv:keywords 에서 property value를 Rev로 입력해준다.
그리고 나서 커밋을 하면 아래와 같이 소스가 변경된다.


다시 해제 하면 아래와 같이 소스가 변경됨을 알 수 있다.


 
Posted by 구차니
Revert to this revision을 하면
working copy 자체가 구버전으로 변경된다.
물론 빨간색 느낌표로 modified로 인식이 되는데..
단순하게 구버전을 HEAD 로 끌어올 방법은 없으려나?
대충 해보니 Create branch/tag from revision에서 HEAD로 정해주면 될것 같은데..
사용하던 저장소라 테스트해보기 겁나네 ㅠ.ㅠ


아무튼, 이 리비전으로 돌아갈건지 꽤나 겁을 주네 -_-


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

gitosis - 안전하게 git 호스팅 하기  (0) 2011.12.23
git-svn  (0) 2011.12.23
TortoiseSVN Trac의 SVN 접속시 인증오류  (0) 2011.11.15
svn 명령어  (0) 2011.10.16
rabbitVCS - 리눅스용 svn client  (0) 2011.10.15
Posted by 구차니
repository browse
>> svn ls file:///repo_dir

Check for modificiations
>> svn status

[링크 : http://wiki.kldp.org/wiki.php/SubversionBook/Reference]
[링크 : http://maverick.inria.fr/~Xavier.Decoret/resources/svn/index.html]
Posted by 구차니
현재 딱히 좋은 방법이 없어서
/etc/shadow에 직접 연결했는데 음..
생각해보니 DAV도 이용하고 적절하게 된듯?

Setup PAM for authentication

However, our SVN can be access by everyone, that is to say everyone can check out and commit, so we need to configure apache’s authentication for SVN. We plan to use PAM so that UNIX system user can access SVN use their username and password.

First enable auth_pam and auth_sys_group modules for apache2:

$ sudo a2enmod auth_pam
$ sudo a2enmod auth_sys_group

If we use shadow password in our system, we need to add www-data to the shadow group so that apache can read (not write!) the password of system user:

$ sudo adduser www-data shadow

Then edit our /etc/apache2/sites-available/ssl file and it should contain the following lines (the lines in red are newly added):

    DAV svn
    SVNPath /home/svn
 
    AuthType Basic
    AuthName “Subversion Repository”
    # this line is needed if your system use shadow password
    AuthUserFile /etc/shadow
    require group src

Restart the apache and everyone in the src group can access SVN repository.


[링크 : http://inming.net/?p=86]
 

Posted by 구차니
tortoiseSVN은 원래 Client 프로그램이지만
File system 레벨로 구성하면 로컬 하드에 저장소를 구축하여 사용할 수 있다.
(물론 이 경우 사용자 이름으로 윈도우 로그인 이름이 저장된다)

Step 1. 일단 귀찮으니 D 드라이브의 루트에 repos 라는 폴더 생성!


Step 2. repos 폴더를 선택해서 "TortoiseSVN -> Create repository here"를 실행한다.

 
Step 3. 머 생성되었다는 간단한 메시지

 
Step 4. 심심하니 한번 구경을 해보려면 바탕화면이나 탐색기의 빈공간에서 "TortoiseSVN -> Repo-browser"를 실행

 
Step 5. file:/// (/이 세번 들어감!) d:/ 이런식으로 리눅스 스타일로 적어줌

 
Step 6. 아직 넣은게 없으니 깨끗한 저장소

 
Step 7. 정식대로 쓰려면 빈공간에서 "SVN Checkout"을 실행하고

 
Step 8. URL에 아까 repo-browser에서 사용했던 것처럼 file:///d:/repos 를 입력한다.

 

Step 9. 아직 파일은 없으니 단순하게 check out만 하고 폴더가 생긴다.



그 이후에는 이 폴더 안에 파일을 넣고
TortoiseSVN 메뉴에서 Add를 하거나 Delete를 하거나 Rename 등의 작업을 하고


저장소에 정식으로 올려넣으려면 Commit을 하면된다. 

 

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

TortoiseSVN doc 비교  (0) 2011.07.29
svn pam  (0) 2011.06.24
SVN relocate / switch  (0) 2011.05.11
svnadmin dump / load를 이용한 저장소 합치기  (2) 2011.05.09
SVN 저장소 합치기 - merging SVN repositories  (0) 2011.01.08
Posted by 구차니
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 구차니
개소리 왈왈/독서2010. 11. 18. 16:25
너무 단순한 표지와 제목으로 인해 -_-
처음에는 읽어볼 생각도 안하다가 cvs에서 svn으로 갈아타려고 마음을 먹은지라
한번 읽어 볼까? 라는 가벼운 마음에 집어들었다가

완전 제대로 득템을 한 느낌을 받게해준 책!

subversion의 사용방법과 모호한 내용을 시원하게 긁어주는 책이다.
(일단 svn은 berkelyDB를 사용하는게 좋다는데 DB는 선천적 알레르기가 ㅠ.ㅠ)

2010/11/18 - [프로그램 사용/CVS / SVN / GIT] - svn export 와 checkout의 차이점
2010/11/18 - [프로그램 사용/CVS / SVN / GIT] - svn blame

Posted by 구차니