3

今日は私がSVNで遊んでいる最初の日です。ただし、解決できない状況が 1 つあります。

私は 2 台の PC でチェックアウトします。最初の PC の PC は、ファイル内の何かを変更してコミットします。次に、2 番目の PC がコミットを試みます。

Commit failed (details follow):
File '/classes/ghjs.html' is out of date

2 番目の PC で更新を実行する必要があり、PC 1 から新しいファイルを取得し、再度適切にコミットできますが、更新前に行った変更は失われます。

コード行を書く前にコミット/更新する必要がある場合、SVNはそれほど素晴らしいものではありません。そうしないと、同じファイルで作業している他の人が最新バージョンを持っていません。

「ライブ」コラボレーションについては何も考えていないことは理解していますが、古いバージョンで作業していた場合、更新の代わりに変更を最新バージョンに手動で「移植」できる何かがあるに違いありません。

「バージョン」をsvnクライアントとして使用し、textwranglerをphpコードを編集するためのエディターとして使用しています。

4

3 に答える 3

5

2 番目の PC で更新を実行する必要があります。PC 1 から新しいファイルを取得すると、再度適切にコミットできますが、更新前に行った変更は失われます。

いいえ、失われていません。それらはローカル コピーに (期待どおりに)マージされ、更新後にそれらをリポジトリに追加することをコミットできます。マージの結果競合が発生した場合は通知されますが、それでも作業が失われることはありません。

更新後に変更を失った場合は、何か間違ったことをしたことになります。私はバージョンについてまったく詳しくないので、何とも言えません。

于 2011-06-15T16:47:21.767 に答える
0

次に、PC 2で「更新」すると、PC1からの変更がPC2の作業コピーにマージされます。ファイルがPC2で編集された場合は、それらをきれいにマージするか、マージの競合が発生するはずであり、手動で解決できます。

これは、SVNが2つの変更をマージする場所を持つようにこのように行われます。マージは、サーバーではなく、作業コピーで行われます。

更新時にPC2からの変更が失われ、マージエラーが表示されない場合は、実際に問題になる可能性があります。

于 2011-06-15T16:49:58.677 に答える
0

PC 2 上のファイルへのローカルな変更は、svn update. これらは、pc1 で行われた変更とマージされ、コミットされます。競合している同じ行に変更が加えられた場合、いずれかのファイル バージョンからの変更を保持することを選択して、競合が解決されるまでコミットできません。ただし、更新後にローカルの変更を失うべきではありません。

于 2011-06-15T16:47:50.363 に答える