주절

2003년 말 부터 쓰기 시작. 어느정도 안정화는 된것 같은데, 몇몇 잡스런 오류가 자주 보인다. 소스 관리에는 지장이 없어보여서 cvs 대신 이걸 쓰기로 했다.

2004년 7월 현재, subversion 에 아주 만족한다. cvs 나 소스세이프 쓰자고 하면 아주 짜증을 낼거다. 누군가 cvs 쓰자고 하면 버전관리툴비교를 보여주자

2005년 7월 현재, 가벼운 프로젝트에는 darcs도 사용중이다. Subversion 과 darcs 의 투톱!!

linux kernel

기존 BitKeeper 를 쓰던 리눅스 커널이, BitKeeper 가 리눅스쪽 라이센스를 변경하면서, 토발즈가 차기 소스 컨트롤 툴로 뭘 쓸지 고민하는 기사 가 있었다. 차기툴로 subversion 이 될가능성은 매우 낮지만, 이는 성능문제가 아니라 리눅스 커널 개발팀이 바라는 모델은 분산된 저장소를 가지는 것인데, subversion 은 cvs 형태의 중앙집중형 저장소를 가지기 때문이다.참고

위 링크를 읽다보면 monotone 이란놈이 나오는데 이것도 언제 한번 봐둬야겠다. 1 GnuArch 는 왠지 정이 안가서...

관련 페이지

설치와 간단한 사용

http://doc.kldp.org/wiki.php/DocbookSgml/Subversion-HOWTO

윈도에서 subversion 의 설정

subversion 에 딸려오는 메뉴얼에 보면 나와있듯이 레지스트리를 고쳐서 할수도 있고, Documents ans Setting 아래 자신의 Application Data 폴더 의 Subversion 안의 설정들을 고쳐도 된다. editor 를 지정하기 위해서 설치후 한번은 설정을 손봐야 한다.

Property

프라퍼티가 무엇인지는 영문 메뉴얼 참고.(Subversion provides interfaces for adding, modifying, and removing versioned metadata on each of your versioned directories and files. We refer to this metadata as properties, and they can be thought of as two-column tables that map property names to arbitrary values attached to each item in your working copy.)

Manipulating Properties

속성추가하기

속성을 파일로 추가하기

property 수정하기( 지정된 에디터를 이용한다. )

다수의 파일에 적용시킬수도 있다.

어떤 파일이나 디렉토리의 property 를 보고 싶다면,

값까지 보고 싶다면, -v(--verbose)

지우려면,

Special Properties

property 는 어떠한 이름으로도 만들수 있지만, svn: 으로 시작하는 property 들은 예약되어 있다. 미리 지정된 몇개의 special property 들은 다음과 같다.

svn:executable

파일의 실행 퍼미션 저장한다. 셸 스크립트 같은경우, cvs 를 이용하면 x 퍼미션이 날아가버리는데, 이런 문제를 해결할때 쓰면 된다.

svn:mime-type

파일이 바이너리인지 아닌지 판단, 또 아파치에 물렸을때 mime 값에도 영향 등등

svn:ignore

cvs 에서의 ignore 와 같은것으로, global config 에서도 세팅이 가능하지만 디렉토리 별로도 세팅을 해줄수 있다.

.cvsignore 파일을 그대로 옮겨올수도 있다.

실제로 내경우, 이놈을 제일 자주 쓰게 되는데,

이런식으로 ignore 할 파일들을 적당히 편집해주는 식으로 쓰게 되더라.

이쪽은 영문 메뉴얼을 더 읽어볼것

svn:keywords

파일내의 키워드를 찾아서 value 로 치환하는 기능을 쓸수 있다. 가능한 키워드는 5개( log 가 없다는게 낭패 )

이런 키워드들이 파일내에 있더라도, 치환을 하라고 지정을 하지 않으면 치환이 되지 않는다.

예를 들어 이런 파일 weather.txt 이 있을때

치환을 시켜주려면,

를 해주면 된다.

내가 주로 쓰는 방법은

svn:eol-style

end of line 지정. 영문 메뉴얼 참고

svn:externals

아래쪽의 챕터를 참고

Externals Definitions

어떤 솔루션이 크게 n개의 프로젝트로 구분되어 있어서 n개의 리파지토리를 쓸때, 하나의 프로젝트를 checkout 하면서 다른 프로젝트들도 자동적으로 checkout 을 할수 있게 할수 있다.

예를 들어

이렇게 정의된 경우, calc 를 checkout 하면 외부 프로젝트들도 checkout 된다.

Vendor Branches

소스 코드내에 revision 넣기

즉, a.out 이라는 파일의 도움말에 어떤 revision 에서 컴파일되었는지 보여주는 방법. SubversionRevisionInSource 에 정리해 놓았다.

1.1 에서 달라진점

http://subversion.tigris.org/svn_1.1_releasenotes.html

아무래도 얼마간 1.0 을 쓸테니까, 1.1 의 새기능들을 적어둔다. 후에 1.1로 올렸을때 한번 읽어보자. 가장 인상적인것은 fsfs 와 심볼릭 링크 지원.

Non-database repositories

fsfs 를 지원. 버클리는 자주 깨진다는 말이 있던데, 아직 경험해보지 못했으니 바꿀 생각은 없다.

Symlink versioning

svn:special 를 이용해서 심볼릭 링크를 지원한다는데, 유닉스/윈도우 가 약간 다른방식으로 돈다

Client follows renames

Commandline auto-escaping of URI and IRIs

svn checkout "http://host/path with space/project/españa" 이런식으로 쓸수 있게 됐다.

Localized messages

버클리 DB 깨지는 경우와 해결 방법

client 쪽에서 global-ignore 설정하기

cedet 가 만드는 semantic.cache 나, 또는 *.py 에서 나온 *.pyc 등을 매번 ignore 해주는것은 귀찮으니까 클라이언트의 설정중 global-ignore 에 등록해두자. 윈도의 경우, 이 설정을 바꾸는 방법이 몇가지가 있는데(레지스트리,파일수정등) 내가 쓰는 방법은 ~/Application Data/Subversion/config 파일을 수정하는방법.

만약 msvc 작업을 주로 한다면 이놈들도 ignore 해두면 편하다

그외 이렇게 쓰는 사람도 있더라 이건 .cvsignore 의 경우이고, http://www.wxwidgets.org/wiki/index.php/Bakefile_Tips 가 출처

나는 이걸 쓰는중인데 문제가 생기면 수정하자

config 의 주석을 잘 읽어보자.

소스파일의 EOL(end-of-line) 세팅

sun 과 windows 사이에서 코드교환이 별 문제 없길래 이거 안해놓고 있었는데, FreeBSD 와 windows 간에는 문제가 생기더라.(이건 버전을 타는건지.. 예전엔 별문제 없었는데..)

~/Application Data/Subversion/config 의 다음부분의 주석을 풀어주자.

auto-props 섹션의 .cxx .cc 등은 내가 추가해넣은것이다. 그외에도 필요한 파일들이 있으면 추가해두자.

만약 global 하게 세팅이 필요 없다면, 아래처럼...

백업

SubversionBackup

불편한점

Subversion 은 매 프로젝트마다 리파지토리를 만들어야 하는 귀찮은점이 있는데 나홀로쓸 프로젝트에 이걸한다는건 좀 오버다. darcs 도 살펴보도록 하자.

out of date

이거 자주 보여서 짜증나는데 FAQ 의 일부를 적어둔다. 세가지 경우가 있다는데, 내가 경험한것은 모두 두번째 mixed revisions 였고 svn update 한방으로 문제가 해결.

  • 1 잠깐 둘러봤는데 역시 정이 안간다 분산 버전 컨트롤은 내가 쓸일이 없을듯


CategoryTool

Subversion (last edited 2007-06-07 17:01:27 by dreamstorm)