'tool/VersionControl'에 해당되는 글 4건

http://semver.org/


독립적인 응용 프로그램 보다는 라이브러리를 위한 것인데요. 간단히 요약하면

* 버전 번호는 기본적으로 x.y.z.r 형식이고 x, y, z, r 은 숫자.

* x는 주(major) 번호로, 라이브러리가 노출하는 공개 API에 '하위 호환성 없는 변화'가 생겼을 때 증가

* y는 부(minor) 번호로, 공개 API에 '하위 호환성 있는 변화'가 생겼을 때 증가

* z는 브랜치 구분

* r은 공개 API의 변화가 없는 버그 교정이나 내부 개선 시 증가.


이 제안의 요지는, 버전 번호 변경 방식(또는 버전 번호의 '의미론')에 대한 합의가 있으면 외부 라이브러리를 사용하는 프로그램의 갱신이나 유지 보수가 쉬워진다는 것입니다. 

예를 들어 Bar라는 라이브러리의 1.2.0.3 버전을 사용해서 Foo라는 프로그램을 만들었다고 할 때, 나중에 Bar가 1.2.0.4(버그 교정)나 1.3.0.0(하위 호환성 보장)으로 갱신된 경우 Foo의 개발자는 Foo를 변경할 필요가 없음을 바로 알 수 있습니다. 소프트웨어 설치/의존성 관리 프로그램들도 이를 기계적으로 알 수 있겠고요.


https://indidev.net/forum/viewtopic.php?f=2&t=115 류광님 답글에 의견을 덧붙임

'tool > VersionControl' 카테고리의 다른 글

분산 버전 관리 시스템  (0) 2015.05.28
이름을 변경하고 뭔가 내용을 수정후 커밋할 경우 오류  (0) 2015.03.10
Ankh SVN  (1) 2012.08.21
블로그 이미지

란마12

,

로컬 버전 관리 시스템

대부분의 사람들이 버전 관리를 위해 쓰는 방법은 파일을 다른 디렉토리에 복사하는 것이다(똑똑한 사람이라면 디렉토리 이름에 시간을 넣을 것이다). 이 방법은 간단하고 자주 사용되는 방법이지만 실수가 발생하기 쉽다. 어느 디렉토리에서 작업하고 있었는지 잊어버리고 엉뚱한 파일을 덮어쓰거나 의도하지 않았던 위치로 복사할 수도 있다.

이 문제를 해결하기 위해 오래전에 프로그래머들은 간단한 데이터베이스에 파일의 변경 사항을 기록하는 로컬 버전 관리 시스템을 만들었다(그림 1-1 참조).


그림 1-1. 로컬 버전 관리 다이어그램

유명했던 VCS 도구들 중 현재에도 널리 쓰이는 것으로 RCS라 불리는 시스템이 있다. 그 예로 Mac OS X 운영체제에서는 개발 도구를 설치하면 RCS가 딸려온다. RCS의 기본적인 동작 방식은 각 리비전들 간의 패치 세트(patch set)라고 하는 데이터의 차이점들을 특별한 형식의 파일에 저장, 특정 시점의 파일 내용을 보고 싶을 때 해당 시점까지의 패치들을 모두 더하여 파일을 만들어내는 것이다.

중앙집중식 버전 관리 시스템

또 다른 문제는 시스템 외부에 있는 개발자들과 함께 작업하는 것이다. 중앙집중식 버전 관리 시스템(Centralized Version Control System; CVCS)은 이 문제를 해결하기 위해 개발됐다. CVS, Subversion, Perforce와 같은 시스템들이 여기에 속한다. CVCS에서는 버전 관리되는 모든 파일을 저장하는 하나의 서버와, 이 중앙 서버에서 파일들을 가져오는(checkout) 다수의 클라이언트가 존재한다. 오랫동안 사용된 이 방식은 지금까지도 버전 관리의 대표적인 방식이다(그림 1-2 참조).


그림 1-2. 중앙집중식 버전 관리 다이어그램

CVCS는 로컬 VCS에 비해 장점이 많다. 누구나 다른 사람들이 무엇을 하고 있는지 알 수 있고, 관리자는 누가 무엇을 할 수 있는지 꼼꼼하게 관리할 수 있다. CVCS를 관리하는 것은 수많은 클라이언트의 로컬 데이터베이스를 관리하는 것보다 훨씬 쉽다.

그러나 CVCS는 심각한 단점이 있다. 중앙 서버가 잘못되면 모든 것이 잘못된다는 점이다. 서버가 다운될 경우 서버가 다시 복구될 때까지 다른 사람과의 협업도, 진행 중이던 작업을 버전 관리하는 것도 불가능해진다. 중앙 데이터베이스가 저장된 하드디스크에 오류가 발생하고 백업도 없다면, 사람들이 각자 자신의 컴퓨터에 가지고 있던 스냅샷 외에는 그동안 쌓인 프로젝트의 이력을 모두 잃게 된다. 로컬 VCS 시스템도 같은 문제가 있다. 프로젝트의 모든 이력이 한곳에만 있을 경우 이것은 피할 수 없는 문제다.

분산 버전 관리 시스템

분산 버전 관리 시스템(Distributed Version Control System; DVCS)은 앞서 말한 문제를 해결하기 위해 개발되었다. Git, Mecurial, Bazaar, Darcs 등 DVCS에서는 클라이언트가 파일들의 마지막 스냅샷을 가져오는 대신 저장소(repository)를 통째로 복제한다. 따라서 서버에 문제가 생겨도 어느 클라이언트든 복제된 저장소를 다시 서버로 복사하면 서버가 복구된다. 체크아웃(checkout)을 할 때마다 전체 백업이 일어나는 셈이다(그림 1-3 참조).


그림 1-3. 분산 버전 관리 시스템 다이어그램

게다가 대부분의 DVCS에서는 다수의 원격 저장소(remote repository)를 갖는 것이 가능하기 때문에 동시에 여러 그룹과 여러 방법으로 함께 작업할 수 있다. 이로 인해 계층 모델(hierarchical model) 등 중앙집중 시스템에서는 할 수 없는 다양한 작업 방식(workflow)들을 사용해볼 수 있다.

http://git-scm.com/book/ko/v1

'tool > VersionControl' 카테고리의 다른 글

버전 넘버링 제안  (0) 2015.07.16
이름을 변경하고 뭔가 내용을 수정후 커밋할 경우 오류  (0) 2015.03.10
Ankh SVN  (1) 2012.08.21
블로그 이미지

란마12

,

Ankhsvn에서


이름을 변경하고 뭔가 내용을 수정후 커밋할 경우 오류가 발생한다.


... which is not part of the commit both sides of the move must be committed together ...


버그인지 모르겠으나 해결방법은 다음과 같다.


1. Repository에서 이름 변경전의 파일을 클라이언트로 복사한다.

2. 해당 파일을 솔루션에 추가후 커밋한다.

3. 해당 파일을 솔루션에서 제거후 커밋한다.

'tool > VersionControl' 카테고리의 다른 글

버전 넘버링 제안  (0) 2015.07.16
분산 버전 관리 시스템  (0) 2015.05.28
Ankh SVN  (1) 2012.08.21
블로그 이미지

란마12

,

Ankh SVN

tool/VersionControl 2012. 8. 21. 10:05

 Visual Studio 2010에서 Ankh SVN플러그인을 사용하는 방법을 알아보자.

  먼저 Ankh SVN을 다운 받아 설치한다. 
    
  구글에서 ankh svn으로 검색해서 최신 버전으로 다운 받으면 된다.
  ( 정식 사이트에서 다운 받으려면 가입해야 하므로 귀찮으신 분은 우측 상단에 있는 것을 다운 받으면 된다.)

  설치는 그냥 설치할 폴더정하고 약관에 동의하는 정도가 다 이므로 따로 다루지 않겠다.

  설치가 완료되면 Visual Studio 를 실행한다.

1. 저장소 추가.

사용자 삽입 이미지

  위 화면에 보이는 것 처럼  보기 -> Repository Explorer 를 선택하면 아래와 같은 화면이 나온다.

사용자 삽입 이미지

  그러면 화면의 붉은 원 안에 있는 Add 버튼을 누르고 아래와 같이 SVN 저장소의 주소를 입력한다.

사용자 삽입 이미지

  OK 버튼을 누르면 저장소에 접근하기 위한 ID와 PW를 요구하는데, 입력하고 나면 아래와 같이 저장소가 추가된 것을 볼 수 있다.

사용자 삽입 이미지


 2. 저장소에 프로젝트 추가.

 이제 저장소 추가가 끝났으니 저장소에 프로젝트를 추가해 보자.

 기존에 작성하던 프로젝트(또는 솔루션)가 있다면 프로젝트를 열면 되고, 아니면 새로 프로젝트를 생성하자.

사용자 삽입 이미지

솔루션 탐색기에서 추가할 솔루션 또는 프로젝트를 선택하고 마우스 우클릭 메뉴에서 Add Solution to Subversion을 선택한다.

사용자 삽입 이미지

  적절하게 프로젝트 이름을 지정하고, Repository Url에 아까 추가한 주소를 넣으면 아래에 표시해 준다. (필요에 따라 비밀번호를 물어볼 수 있다. 만약 화면 중앙에 저장소가 표시 되지 않는다면, 접근 권한이 없거나 비밀번호 등에 문제가 있을 수 있으므로 확인하기 바란다.)

  그리고 마지막으로 Add trunk Folder for Project 를 체크 한다. 이 것은 SVN에서 브랜치나 태그를 관리하기 위해 사용하는 방식으로 주된 개발은 trunk 폴더에서 이루어지며, branches 나 tags 같은 폴더를 생성해 브랜치나 태그를 저장해 두기 위함이다.

  OK 버튼을 누르면 아래와 같이 커밋 코멘트를 입력할 수가 있다. 특별히 적을 것이 없다면 안 써도 되지만, 간략하게라도 추가되는 것이나 변경된 것들에 대해 작성해 주면 좋다.

사용자 삽입 이미지

OK를 누르면 저장소에 전송이 되고 아래 그림과 같이 솔루션 탐색기의 파일들 앞에 파란색 + 표시가 나타난 것을 볼 수 있다.

사용자 삽입 이미지

  프로젝트가 커밋이 되었지만, 실제 파일들까지 추가된 것이 아니라 폴더만 생성된 것이기 때문에 위 파일들을 다시 추가해 줘야 한다.

사용자 삽입 이미지

  다시 솔루션에서 우클릭해서 Commit Solution Changes 를 선택하면 아래와 같이 추가될 파일들이 나타나는데 불필요한 파일은 제외하고 커밋하면 된다. 주로 바이너리 파일이나 생성이 가능한 것들은 추가하지 않는것이 좋겠다. 기본적으로 필요한 것들은 추가하면 된다. 여기서도 마찬가지로 코멘트를 남긴다.
사용자 삽입 이미지

  Ok를 누르면 커밋을 수행한다. 커밋이 끝나면 우측 솔루션 탐색기의 파일 앞에 있던 파란색 + 표시가 사라지고 체크 표시가 되어 있는 것을 볼 수 있다.

사용자 삽입 이미지
이 상태는 저장소에 있는 파일과 현재 내가 가진 파일들이 일치한다는 것을 나타낸다. 만약 다른 코드를 수정하게 되면 체크표시 대신에 빨간색 사각형 표시가 나타나 수정되었음을 표시해 준다.

여기까지가 저장소에 프로젝트를 추가하는 방법이었다.

3. 저장소에서 프로젝트 가져오기.

 Visual Studio를 실행하고 SVN 저장소에서 코드를 체크아웃 하기 위해서는 1번 저장소 추가에서 살펴본 대로 보기 -> Repository Explorer 를 선택한다.  만약 저장소를 추가하지 않았다면 1번을 보고 저장소를 추가하도록 한다.

 저장소가 추가되어 있다면, 아래와 같이 해당 저장소에 포함된 프로젝트가 나타나게 된다. svn/manghon을 선탣하면 저장소 manghon에 포함된 모든 (지금은 BrainTrainer 밖에 없지만..) 프로젝트를 포함하는 것이며, BrainTrainer 프로젝트만 선택하면 그 하위에 포함된 것들만 포함하게 된다.
 체크아웃할 프로젝트를 선택하면 붉은 원 안에 체크아웃 버튼이 활성화 된다.
사용자 삽입 이미지

 체크아웃 버튼을 누르면 아래와 같이 선택한 저장소의 경로가 나오고, Type으로 최신 버전 또는 날짜, 또는 Revision 으로 체크항 수 있게 선택할 수 있다.
  적당한 Path를 선택해 Ok 버튼을 누르면 체크아웃된다.

사용자 삽입 이미지

  체크아웃한 프로젝트를 바로 열어 주지는 않으므로 체크아웃한 폴더에서 프로젝트 파일을 열어 보면 저장소에서 받아온 버전으로 구성되어 있는 것을 볼 수 있다.

4. Lock 과 변경사항 커밋

  Lock은 저장소에서 체크아웃한 코드를 수정하기 전에 다른 사람이 해당 파일 또는 프로젝트를 수정하지 못하도록 잠그는 기능을 말한다. 물론 Lock을 하지 않고 여러 사람이 동시에 수정을 하고 각자 커밋을 하게 되면 충돌이 발생할 수 있으므로 적절하게 Lock을 사용하는 것이 좋다. 하지만 무분별한 Lock 사용은 여러 사람의 동시 작업의 효율을 떨어트릴 수 있으므로 주의해야 한다.
  Lock는 다음과 같이 수행할 수 있다.
사용자 삽입 이미지

  Subversion의 Lock 를 선택하면 아래와 같이 Lock을 걸 파일을 선택하는 창이 나온다. (이 예에서는 Form1.cs 파일을 선택하고 Lock을 선택한 화면이다.) 선택한 파일과 관련된 파일을 보여준다.

사용자 삽입 이미지

  적절한 메시지와 함께 Lock 걸 수 있다. Lock을 걸게 되면 솔루션 탐색기에서 체크표시 아래에 동그란 원 표시가 추가되어 Lock되었음을 나타낸다. Unlock도 마찬가지로 수행할 수 있다.

  수정한 파일을 커밋할 때에는 Commit를 선택하고 커밋할 파일들 선택한 다음, 코멘트를 추가하면 된다.
  만약 수정하다가 실패해서 다시 저장소에 있는 버전으로 되돌리고 싶을 경우 Revert 를 선택하면 된다.
  그리고 현재 파일 또는 프로젝트의 변경 히스토리를 보려면 View History를 선택하면 되고, 수정한 파일이나 선택한 파일이 저장소에 있는 파일과 얼마나 다른지(어디가 수정되었는지)를 보기위해서는 Show Changes를 선택하면 된다.

  그리고 중요한 것은 여러 사람이 저장소를 사용할 경우 각자 체크아웃 받아가서 커밋을 수행하다보면 내가 가진 파일이 최신이 아닌 경우가 생기게 되는데, 이때에는 Update to Latest Version을 통하여 선택한 파일 또는 프로젝트 전체를 저장소에서 최신으로 가져올 수 있다. 
사용자 삽입 이미지


이상으로 Visual Studio 2010에서 Ankh SVN 사용법을 알아보았다. 기타 SVN관련 사용법은 검색을 통하여 더 자세히 알 수 있을 것이다. 



출처: http://manghon.com/blog/category/%C0%DA%B7%E1%BD%C7/Development%20Tools

블로그 이미지

란마12

,