時には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コマンドを使用できます。だから実際には別のことではありません。
- RCSモード(または
cp FILE FILE.new
Emacsmv FILE FILE.new
)で変更されたファイルのコピー/移動C-x C-w FILE.new
。 co -l FILE
RCS(またはEmacsで:C-x C-f FILE
- もう一度開いた後C-x v v
)で最新バージョンを確認してロックします。- 新しい修正で上書きされます。
- 送信してください(
ci ...
またはEmacsからC-x v v
:)。
(この基本的なアプローチに加えて、目標を達成するための他の簡単な方法、つまりこの場合の特定のオプションを持つことも興味深いかもしれません。)