꽃무늬 키보드

리눅스에서 svn 사용하기 본문

Version Controll/svn

리눅스에서 svn 사용하기

Katherine Choi 2014. 6. 10. 18:38

 리눅스에서 SVN 클라이언트 설치하기


 [root@katie ~]# svn

 -bash: /usr/bin/svn: 그런 파일이나 디렉터리가 없습니다 

 [root@katie ~]# rpm -qa|grep subversion

 [root@katie ~]#


설치되어 있지 않을 때 위와 같으며, 다음 명령을 통해 설치할 수 있다.

 [root@katie ~]# yum install subversion




SVN으로 버전관리 시작하기

  • 내 소스를 저장소에 올리기
$ svn import [대상 파일] [svnURL] -m [로그메세지]

  • 저장소의 소스를 최초에 체크아웃 받기
$ svn checkout [svnURL]

  • 리비전 키워드
커밋을 실행할 때마다 저장소의 리비전은 1씩 증가한다. 리비전 키워드는 이러한 리비전 번호를 대신하여 사용할 수 있다.

- HEAD : 저장소에 있는 최신 리비전

- BASE : 내 작업 공간에 있는 파일 디렉토리의 원래 리비전

- COMMITTED : BASE 이전 또는 BASE 에서 변경된 아이템이 있는 마지막 리비전

- PREV : 변경이 있던 마지막 리비전 직전의 리비전



기본적으로 반복되는 작업

 

1. 최신 소스로 업데이트하기

    • 다른 사람의 변경점을 모두 받아서 나의 소스를 최신 버전에 맞춘다.
    $ svn update

    U : 해당 파일이 파일이 갱신 되었다.

    A : 해당 파일이 내 작업 공간에 추가되었다.

    D : 해당 파일이 내 작업공간으로부터 삭제되었다.

    R : 해당 파일이 치환되었다. 해당파일이 삭제되어 같은 이름의 새로운 파일로 추가되었다. 이름은 같지만 저장소에서는 이것을 다른 히스토리를 가진 개체로 간주한다.

    G : 새로운 변경점을 받았지만 내 작업 공간에서도 수정되었고 충돌하지 않기 때문에 문제없이 합쳤다.

    C : 내 작업공간과 겹치는 변경점을 받아 충돌이 있다. 


     


     

    2. 소스 변경하기

      • 파일을 저장소에 추가하도록 예약한다. 커밋해야 적용된다.
      $ svn add [대상파일]

      • 파일을 저장소로부터 삭제하도록 예약한다. 파일이면 내 작업공간에서 즉시 삭제되며, 디렉토리라면 커밋한 후 내 작업공간과 저장소에서 삭제된다.
      $ svn delete [대상파일]

      • 대상파일을 복사하여 새로운 파일을 만든다. 커밋하면 적용되며 대상파일의 복사본이라는 히스토리가 기록된다.
      $ svn copy [대상파일] [새로운파일 이름]

      • 새로운 파일이 복사본으로서 추가예약되며 기존 대상파일은 삭제예약된다. 위의 copy와 delete를 한 번에 수행하는 것과 같다
      $ svn move [대상파일] [새로운파일 이름]

       


       

      3. 변경점 확인하기

      • 모든 파일과 트리에 대한 수정 사항 확인
      $ svn status

      A : 파일 혹은 디렉토리가 저장소에서 추가 예약되었다.

      M : 파일의 내용이 변경되었다.

      D : 파일 혹은 디렉토리가 저장소에서 삭제 예약되었다.

      ? : 파일 혹은 디렉토리는 버전 관리되고 있지 않다.

      ! : 파일 혹은 디렉토리는 버전 관리되고 있지만 없어졌거나 불완전하다.

      ~ : 파일 혹은 디렉토리가 작업 공간과 저장소에 서로 다른 타입의 개체로 존재한다.

      C : 파일 혹은 디렉토리가 충돌 상태에 있다. 커밋하기 전에 충돌을 해결해야 한다.


      • 자신의 변경점 확인
      $ svn diff

      • 수정한 파일을 수정하기 전으로 되돌리기
      $ svn revert [수정한 파일]

       

       


       

      4. 다른 사람의 변경과 합치기

      다른 사람과 내가 동시에 같은 파일을 수정할 경우 커밋을 할 때 충돌이 발생하게 된다.
      충돌이 발생하게 되면 충돌이 있는 파일이름 뒤에 특정한 표시가 붙은 세 개의 추가 파일이 작업 공간에 만들어지게 된다.

      - filename.mine : 갱신 전 작업 공간에 있던 파일. 내가 한 마지막 변경이 포함.

      - filename.rOLDREV : 작업 공간을 갱신하기 전 .svn의 BASE 리비전에 있던 파일의 내용. 마지막에 편집한 파일의 직전 상태의 파일(체크아웃 시점 상태)

      - filename.rNEWREV : 작업 공간을 갱신하면서 서버로부터 받은 파일. 저장소의 HEAD 리비전에 대응.


      이렇게 충돌이 날 경우 세 가지 방법 중 한 가지를 해야한다.

      - '손으로' 충돌 텍스트를 합친다.

      - 작업 파일에 임시 파일 중 하나를 덧쓰기 한다.

      - svn revert filename 을 실행하여 로컬의 모든 변경을 버린다. 

       

      • 충돌 해결 후 반드시 svn resolved를 실행하여 subversion에 그것을 알려야 한다.
      $ svn resolved [충돌한 파일]

       


       

      5. 나의 변경점을 커밋하기 

      $ svn commit [대상 파일] -m [로그메세지]


       

       


      [참고자료]


      'Version Controll > svn' 카테고리의 다른 글

      윈도우에서 svn 사용하기  (0) 2014.06.20
      svn의 기본개념  (5) 2014.06.09
      Comments