실제로 커밋하기 전에 CVS에 제출될 내용을 어떻게 확인합니까?

실제로 커밋하기 전에 CVS에 제출될 내용을 어떻게 확인합니까?

cvs commit 명령을 실행하기 전에 정확히 무엇을 커밋할지 알고 싶습니다. 최근에 다음을 사용하여 파일을 추가했습니다.

cvs add myFile

그런 다음 다음을 사용하여 파일을 제출하십시오.

cvs commit -m "my message"

그런데 commit 명령어를 실행했더니 결국 다른 파일들을 수정하게 되었고, 변경할 의도가 없었거나 커밋될 줄 몰랐던 파일들이 삭제되어서 그 파일들을 하나씩 복원해야 했습니다. 거기가 대기 장소라고 하는 것 같은데? 추가되었지만 아직 제출되지 않았거나 제출 준비가 된 파일은 어디에 있습니까? 나는 실제로 cvs commit 명령을 실행하기 전에 어떤 변경 사항이 적용되는지 확인하고 싶었습니다.

답변1

cvs오랫동안 사용하지 않았습니다. 하위 버전 svn과 수은이 hg더 좋습니다. 원자성 커밋이 있습니다(모든 파일이 함께 커밋되므로 한 단계로 전체 커밋을 백업할 수 있음).

제출할 파일을 지정하십시오:cvs commit -m '«message»' '«file-names…»'

#↳ cvs --help 커밋
사용법: cvs commit [-cRlf] [-m msg -F 로그 파일] [-r rev] 파일...

및/또는 cvs status귀하가 찾고 있는 정보를 찾기 위해.

cvs status 명령을 사용하면 어떤 파일이 최신 상태인지, 어떤 파일을 커밋하거나 병합해야 하는지 빠르게 확인할 수 있습니다. ……—— https://www.oreilly.com/library/view/essential-cvs/0596004591/ch03s04.html#:~:text=%20cvs%20status%20command%20is, 병합됨.

답변2

update커밋할 파일을 지정하지 않은 경우 이 명령을 사용하여 커밋할 수정 및 추가된 파일을 표시할 수 있습니다. 업데이트(모의 실행)를 시뮬레이션하는 옵션을 추가합니다 -n.

$ cvs -n up
cvs update: Updating .
M foo
A yum

yum추가된 파일과 수정된 파일을 표시합니다 foo( up예 별칭 update, 참조 cvs --help-synonyms).

답변3

OP는 어떤 변경 사항이 커밋될 것인지 구체적으로 고려하고 cvs status현재 디렉터리에 파일이 많으면 시간이 꽤 길어질 수 있습니다.

cvs status | grep -P 'Status: (?!Up-to-date)'

아직 개정 관리 대상이 아니며 최신 파일만 표시하는 데 사용할 수 있습니다. 여기에는 아직 체크인되지 않았거나 제출 준비가 완료되지 않은 파일(예: CVS가 전혀 알지 못하는 파일)과 같은 일부 관련 없는 정보가 있을 수 있습니다. 하지만 노력은 덜 해야 합니다. 이는 grep 버전이 -P "Perl 스타일 정규식" 옵션을 지원한다고 가정합니다.

Freddy의 방법은 비슷한 출력을 제공하며 훨씬 빠릅니다.

관련 정보