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의 방법은 비슷한 출력을 제공하며 훨씬 빠릅니다.