리눅스

cvs commit: sticky tag is not a branch cvs 사용법

조원태 2016. 7. 22. 22:48
반응형

버전관리 툴인 cvs를 사용하다보면 

cvs log index.php 

를 이용해서 index.php에 히스토리를 확인할 수 있습니다. 


그런 후 과거 파일을 불러오는 경우가 있는데요.


cvs up -r 1.1 index.php 이런식으로 하면 1.1 버전을 불러오게 됩니다. 



cvs commit: sticky tag   is not a branch


위와 같은 에러는 index.php 가 현재 버전과 과거 버전이 다르기 때문에 commit을 할 수 없는 상태입니다.


이럴 경우 

cvs up -A index.php 


이렇게 하면 sticky tag를 제거하게 됩니다. 


index.php파일을 꼭 백업 하고 명령어를 사용하셔야 합니다.


CVS 사용방법



1.저장소에 등록

cvs commit [-m "log message"] [filename]

-m을 사용하였을 경우 log message의 내용을 같이 저장한다.


2. 최신버전을 작업공간으로 가져오기

cvs update


저장소에 있는 해당 디렉토리와 그 하위 디렉토리에 있는 최신 내용을 모두 가져온다.

cvs update -dP


3.  파일의 로그 보기

cvs log filename


4. 새로운 파일이나 디렉토리 추가하기

저장소에 버전관리할 새로운 파일과 디렉토리가 생겼다는 사실을 알려주어야 한다.

cvs add new_filename

cvs add new_dirname


이렇게 해주면 저장소에 버전관리할 새로운 파일이나 디렉토리가 있다는 사실만을 알려준 것이지 그 내용을 저장한 것은 아니다.

그래서 이후


cvs ci new_filaname

cvs ci new_dirname


cvs add *

cvs ci


현재 디렉토리와 그 하위 디렉토리에 있는 새로 생성된 디렉토리와 파일을 모두 CVS 저장소에 포함시키기 위해서는 


find . -type d -print | grep -v CVS | xargs cvs add

find . -type f -print | grep -v CVS | xargs cvs add

cvs ci


linux command와 혼합해서 사용하여야 한다.



5. 파일 제거하기


cvs remove [filename]



CVS는 저장소에 해당파일을 버전관리 대상에서 제외할 것이라는 것을 통보하게 되고 

실제로 이 파일을 지우는 것은 cvs add에서와 같이


cvs ci


를 통해 이루어지게 된다.


filename이 명시되어 있다면 해당 파일을 제거하고,

명시되어 있지 않다면 CVS는 작업공간의 현재 디렉토리와 그 하위 디렉토리에는 없지만 저장소에는 있는 파일을 모두 찾아 저장소에서 제거하게 된다.

cvs add명령와는 달리 cvs remove는 recursive하게 현재 디렉토리와 그 하위 디렉토리를 모두 찾아 이를 처리해주게 된다.


해당 파일을 저장소에서 제거하였다 하더라도

이후 특정 버전으로 파일을 복구 시키는 것이 가능하다. 이 명령어는 아래에서 설명하도록 한다.


가끔 cvs remove를 하는 도중 

cvs server: cannot remove file `filename' which has a numeric sticky tag of `1.3'.

이와 같은 에러 메세지가 뜨곤 하는데 이는 해당 파일에 sticky tag가 붙어 있어서 그렇다.

이러한 경우 해당 파일을


cvs update -A filename


해주어서 sticky tag를 제거하고 cvs remove를 하면 문제가 해결된다.



6. 디렉토리 제거하기


cvs update -P

비어 있는 디렉토리를 CVS가 자동적으로 제거해 준다.


7. 특정 버전으로 파일 되돌리기

cvs up -r version -p old_filename > new_filename


version: 여기에서 명시해야할 버전은 cvs log 명령어를 통해 확인할 수 있다.

old_filename: 복구할 파일 이름

new_filename: 복구해서 저장할 파일 이름


8. 파일의 특정 부분을 어느 사용자가 수정했는지 확인

cvs annotate filename

cvs ann filename



9. 작업공간의 파일과 저장소의 최신버전의 차이 확인

cvs diff filename



10. 버전별로 파일의 차이 확인

cvs diff -r version1 -r version2 filename


version1, 2: 여기에서 명시해야할 버전은 cvs log 명령어를 통해 확인할 수 있다.


11. 특정 시점으로 파일 되돌리기

cvs up -D YYYY-MM-DD HH-MM [filename]


YYYY-MM-DD: 날짜 (예: 2005-02-22)

HH-MM: 시간 (예: 05:00)

filename을 명시해 주었을 경우 해당 파일을 되돌리고

명시하지 않았을 경우 해당 디렉토리와 그 하위 디렉토리의 내용을 모두 명시한 시점으로 되돌린다.


12. 태그 생성

cvs tag tag_name


해당 디렉토리와 그 하위 디렉토리의 내용에 tag_name의 tag를 붙인다.



13. 태그를 건 시점으로 되돌리기

태그를 생성하였다면 그 태그가 생성된 시점으로 내용을 복구할 수 있다.


cvs up -R tag_name


과 같이 하면

해당 디렉토리와 그 하위 디렉토리의 내용을 tag_name이 지정된 시점으로 복구한다.


14. Revision Number 바꾸기

큰 변화에 따른 revision number를 바꾸기가 가능하다


cvs ci -m "updating major revision number" -r new_version

반응형