본문 바로가기

svn

git 커밋 메세지 수정하기 버전 관리 시스템을 사용할 때, 이전 커밋 메세지를 수정하는 것은 흔한 일이다. 서브버전(svn)은 리비전 번호를 사용하여 간단하게 커밋 메세지를 수정할 수 있지만, git은 서브버전만큼 간단하지는 않다. 특히, 윈도우 환경에서 git을 사용한다면 텍스트 에디터 구동 문제를 해결해야 한다. git에서 바로 이전의 커밋 메세지를 수정하는 것은 간단하다. 텍스트 에디터가 구동 여부에 따라 git commit --amend 또는 git commmit --amend -m "..." 명령을 사용하여 커밋 메세지를 수정할 수 있다. 그러나, 훨씬 이전의 커밋 메세지를 수정하고자 한다면 rebase 명령을 사용해야 하며, 대화식 진행을 해야 하기 때문에 텍스트 에디터가 지정되어 있지 않다면 매우 곤란하다. 윈도우 환.. 더보기
svn:ignore 속성을 사용하여 특정 디렉토리와 파일을 무시하기 SVN을 사용할 때, 소스를 빌드할 때마다 동적으로 생성되는 데이터를 소스 트리에 넣고 싶지 않을 때가 있다, 예를 들어, 안드로이드 프로젝트의 bin이나 gen 디렉토리가 그런 종류의 데이터를 포함하고 있는데, 이들을 체크인하는 것은 저장소의 공간 낭비이며 전혀 무의미한 일이다. 이럴 때, svn:ignore 속성을 사용하여 원하는 디렉토리를 관리 대상에서 제외할 수 있다. 즉, 다음의 프로젝트에서 bin과 gen 디렉토리를 무시하고 싶다면, project --- trunk --- bin --- gen trunk 디렉토리에서 다음과 같은 명령을 입력한다: svn propset svn:ignore '*' bin svn propset svn:ignore '*' gen 이 속성이 지정되면 bin과 gen 디.. 더보기
svn:externals 속성을 활용하여 외부 위치에서 소스 가져오기 SVN의 잘 알려지지 않은 속성 중 하나는 svn:externals이다. 이 속성은 현재 저장되어 있는 소스 트리의 일부분을 다른 저장소에서 가져오도록 지정하는 속성인데, 이를 활용하면 디스크 공간을 절약하고 소스 관리를 훨씬 효율적으로 할 수 있다. 예를 들어, 다음과 같은 상황에서 이 속성을 활용할 수 있다. project1 --- trunk --- main --- service --- extra --- support --- extlib extlib --- trunk project1의 suppport 밑의 extlib는 project1 개발에 필요한 라이브러리지만, 이 라이브러리는 이미 저장소의 다른 위치에서 관리되고 있다. extlib를 직접 project1에 포함시킬 수 있겠지만, 그렇게되면 pr.. 더보기
서브버전 저장소 분할 및 병합 서브버전의 저장소를 구성할 때, 가장 고민 되는 부분은 여러 프로젝트를 포함하는 하나의 단일 저장소 형태로 구성할 것인지, 프로젝트마다 각각의 저장소를 구성할지 여부이다. 두 가지 방법은 각각 장단점을 가지고 있어서 저장소 구성 방법을 선택하기 쉽지 않다. 그러나, 서브버전은 저장소를 덤프하고, 덤프된 데이터를 다른 저장소로 로드하는 수단을 제공하며, 이것은 저장소 일부 데이터를 대상으로도 가능하다. 기본적으로 서브버전이 단일 저장소를 권장하는 것은, 내부 프로젝트들의 변경 이력을 더 쉽게 추적할 수 있고, 필요하다면 언제든지 저장소를 분할할 수 있기 때문이다. 전체 저장소를 덤프하고 로드하는 것은 익히 잘 알려진대로, svnadmin 명령어를 사용하며, 다음과 같다: svnadmin dump URL >.. 더보기
서브버전 서버 설정이 추가된 아파치가 서비스로 실행되지 않을 경우 서브버전 서버를 아파치에서 운영하고자 할 때, httpd.conf에 추가한 서브버전 설정이 httpd -t를 무사히 통과했음에도 불구하고 아파치가 정상적으로 동작하지 않는 경우가 있다. 특히, 이벤트 3299가 발생하면서 mod_dav_svn.so을 읽어들이는데 실패했다면 이것은 시스템 Path에 서브버전의 bin 폴더가 추가되지 않았기 때문이다. 아파치의 modules 폴더에 서브버전의 so 파일들을 복사했다고 하더라도, 서브버전의 bin 폴더가 시스템 전역 Path에 추가되어 있지 않다면 아차피를 서비스로 실행할 수 없다. 서브버전 클라이언트만 사용한다면 시스템 Path에 서브버전 bin 폴더를 추가할 필요는 없지만, 서브버전 서버를 운영하는 시스템은 시스템 Path에 서브버전 bin 폴더를 추가해주.. 더보기
Subversion 1.7 Release : Entirely Overhauled 기다렸던 서브버전(SVN, Subversion) 1.7이 릴리즈되었다. 서브버전 1.7은 서브버전이 아파치 프로젝트의 공식적인 일원이 된 뒤 처음으로 릴리즈하는 버전이다. 서브버전 1.7의 가장 커다란 특징은, 새로운 기능 추가보다는 대대적인 오버홀이다. 당장의 기능 추가보다는 미래를 위해 내부를 대대적으로 재정비했는데, 서브버전의 클라이언트 부분에서 버전 관리 대상의 변경점을 추적하는 WC 라이브러리와 클라이언트 - 서버 사이의 통신을 담당하는 프로토콜이 그 대상이다. 그동안 서브버전이 발전해오는 동안, WC(Working Copy) 라이브러리는 더 이상 유지 보수하기가 힘들어질 정도로 코드는 대단히 복잡해졌다. 서브버전 1.7은 WC-NG(Working Copy-Next Generation)이라는 이.. 더보기
서브버전에서 로그 메세지 수정하기 서브버전(SVN)을 사용할 때, 커밋할 때의 로그 메세지를 수정하고 싶을 때가 있다. 그러나, 서브버전에서 리비전 속성 정보를 수정하는 일은 어떠한 기록도 남지 않기 때문에, 서브버전은 기본적으로 리비전 속성 정보를 수정하는 것을 허용하지 않는다. 리비전 속성 정보를 수정하려면 서브버전이 제공하는 훅(hook)을 사용해야 한다. 생성한 저장소의 디렉토리를 살펴보면 hooks란 디렉토리가 있을텐데, 이 디렉토리에 있는 스크립트들은 서브버전의 정책을 변경할 수 있는 훅 스크립트들의 집합이다. 이 스크립트는 유닉스 스크립트라서, 윈도우에서는 배치 파일로 바꿔줘야 한다. 다음을 참고하여 작성하라. Copy & Paste면 충분하다 : http://tortoisesvn.net/docs/release/Tortois.. 더보기
SVN + 아파치 서버 설정 방법 프로젝트의 버전을 관리하는 소프트웨어 중 가장 널리 알려진 것은 마이크로소프트의 소스세이프(Visual SourceSafe)다. 일반 데스크탑 시장에서는 윈도우가 가장 많은 플랫폼을 가지고 있고, 윈도우 플랫폼에서는 비주얼 스튜디오가 이론의 여지가 없는 최고의 개발툴이기 때문에 비주얼 스튜디오와 가장 잘 연동되는 소스세이프가 가장 잘 알려진 것은 당연한 일이다. 그런데, 소스세이프는 몇 가지 부분에서 불만족스럽다. 먼저, 소스세이프는 기본적으로 파일 잠금에 기반한 소스 관리 방식을 채택하고 있다. 소스세이프도 파일 잠금이 아닌 병합 충돌 처리를 지원하기는 하지만, 소스세이프를 사용하는 대부분의 개발팀은 그냥 잠금 방식을 선택한다. 사실, 충돌 처리에 능숙한 개발자가 아닌 이상 애초에 구현 영역을 나누고 .. 더보기