수정된 파일이 RCS에 의해 사전에 잠겨 있지 않은 경우(Emacs VC 모드를 사용하고 있는 경우) 어떻게 커밋할 수 있습니까?

수정된 파일이 RCS에 의해 사전에 잠겨 있지 않은 경우(Emacs VC 모드를 사용하고 있는 경우) 어떻게 커밋할 수 있습니까?

때로는 RCS 제어 하에 있는 파일이 잠기지 않고 수정됩니다(= 체크아웃하여 수정됨).

(이 경우 실제로는 그러한 수정을 방지하기 위해 RCS에 의해 읽기 전용으로 설정되어 있지만, 패키지를 업그레이드하는 중이어서 수정된 /etc/ 아래의 구성 파일일 수도 있습니다.)

그런 다음 일반적으로 변경 사항이 적용되기 전에 마지막 개정판이 체크아웃된 것처럼 새로운 변경 사항을 커밋하고 싶습니다.

그렇다면 어떻게 진행하는 것이 가장 좋습니까?

저는 주로 Emacs VC를 사용하여 C-x v v체크아웃, 체크인 작업을 수행합니다. 그러나 파일을 먼저 체크아웃하지 않으면 이 작업이 실패합니다. Emacs 내에서만 이 작업을 수행할 수 있는 방법이 있습니까? 그러나 쉘 명령을 사용하여 응답할 수도 있습니다.

답변1

실제로는 훨씬 더 간단합니다. rcs -l잠그고 다시 체크인을 시도 할 수 있습니다 .

나는 당신이 이 질문을 다음과 같이 묻는다고 가정합니다.

$ echo v1 >foo
$ ci -u -t-"Test file." foo
$ chmod u+w foo
$ echo v2 >foo

이 시점에서는 및 둘 다 실패 ci합니다 co.

$ co -l foo
foo,v  -->  foo
revision 1.1 (locked)
writable foo exists; remove it? [ny](n): 

$ ci -u foo
foo,v  <--  foo
ci: foo,v: no lock set by username

다음을 통해 파일을 잠그고 변경 사항을 커밋할 수 있습니다.

$ rcs -l foo
RCS file: foo,v
1.1 locked
done
$ ci -u -m"Second revision." foo
foo,v  <--  foo
new revision: 1.2; previous revision: 1.1
done

답변2

Emacs 매뉴얼(정보)의 VC 섹션에서는 다음과 같은 문제를 해결하기 위한 옵션으로 특수 RCS 작동 모드를 언급합니다.

32.1.12.2 RCS 및 SCCS 옵션

기본적으로 RCS는 잠금을 사용하여 여러 사용자의 활동을 조정하지만 먼저 파일을 잠그지 않고도 변경 사항을 체크인할 수 있는 "비엄격 잠금"이라는 모드가 있습니다. 사용rcs -U비엄격 잠금으로 전환특정 파일에 대한 rcs 자세한 내용은 매뉴얼 페이지를 참조하십시오.

그러나 물론 비엄격 모드로 전환하고 싶지 않을 수도 있습니다.

답변3

이 목표를 달성하기 위해 기본 Unix 명령을 사용할 수 있습니다. 그러니까 사실 별 것 아닌 일이죠.

  1. RCS 모드(또는 cp FILE FILE.newEmacs mv FILE FILE.new) 에서 수정된 파일 복사/이동 C-x C-w FILE.new;
  2. co -l FILERCS( 또는 Emacs에서: C-x C-f FILE--다시 열고 나서 C-x v v) 에서 최신 버전을 확인하고 잠급니다 .
  3. 새로운 수정 사항으로 덮어씁니다.
  4. 제출하세요( ci ...또는 Emacs에서 C-x v v: ).

(이 기본 접근 방식 외에도 목표를 달성하는 다른 간단한 방법, 즉 이 경우에 대한 특정 옵션을 갖는 것도 흥미로울 수 있습니다.)

관련 정보