web-dev-qa-db-ja.com

SVN同期とヘッドの更新(サブクリップ)

私はSubversionとSubclipseの両方にかなり慣れていないため、headへの更新と同期の間に違いがあると私に思わせるいくつかの問題が発生しています。具体的には、(サブクリップの履歴を使用して)元に戻そうとすると、「パス自体の将来の履歴から範囲を逆マージできないため、最初に更新してみてください」というメッセージがよく表示されます。私の同期では、REPOのブランチにあるすべてのファイルの「ヘッド」バージョンがあることを確認する必要がありますが、「ヘッドに更新」を実行すると問題が解決します...だから何ができますか? SVNコンソールをチェックして何が変更されているかを確認しようとしましたが、それほど冗長ではありません。

アイデア?

2つ目の質問がありますが、最初の質問に対する答えが明らかになると思います。興味があり、読む時間がある場合は、それも入力します。これがシナリオです...私はすべてのファイルを「Production」タグから分岐し、プロジェクトで作業を開始しました。数回のコミットの後、変更されたファイルの履歴を確認し、「ドキュメント」によると、太字のバージョンがすべてのコミットの下にあることに気づきました。私の持っているものが頭ではないかのようです。しかし、headはプロジェクトの最新バージョンです。だから私は何が欠けています。

ご返信いただきありがとうございます。

22
gergesi

違いがあります。同期ビューを使用すると、ビュー内のアイテムのみが更新されます。 Subversionでは、フォルダーにもリビジョンがあり、子が変更されるたびにバンプされます。ただし、これらはビューに表示されないため、更新されることはありません。プロジェクトで[チーム]> [更新]を実行すると、すべてのフォルダーとファイルが単一の統一リビジョンに更新されます。これを説明するブログ投稿がいくつかあります。

これは、混合リビジョンの作業コピーのコアSVNコンセプトを説明し、これを理解するために不可欠です。

http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

2番目は、これを処理するSubclipseの機能を示しています。

http://markphip.blogspot.com/2006/12/subclipse-synchronize-feature-show-out.html

2番目のブログが作成されてから、ほとんどのSubclipseユーザーは、この問題には役立ちますが、この機能が気に入らないことに気付きました。そのため、現在のバージョンではデフォルトでオフになっています。もう誰も使っていないと思います。

主なことは、プロジェクトで時々「チーム」>「更新」を使用して、すべてを単一の統一リビジョンにすることです。

マーク

28
Mark Phippard

同期は、HEADがfalseに更新されることと同じであると想定しています。Subclipseの用語で「同期」が「コミット」を意味する場合、コミットしても更新されないため、間違いです。作業コピー。HEADにいることをコミットした後、明示的に更新する必要があります。

これが2つ目の質問です。太字の行が他のコミットより下にある理由は、上記の理由、つまりコミットが更新されないためだと思います。つまり、ファイルへの変更をコミットしてから、別のファイルを見て、HEADより古いものとして見ることができます。これらの他のファイルもHEADに移動されていないためです。

この記事は、混合リビジョンのこの概念を明確にするのに役立ちます: http://markphip.blogspot.com/2006/12/mixed-revision-working-copies.html

また、基盤となるSVNシステムのしくみを理解すると、Subversionのプラグインと拡張機能の操作が常に簡単になるため、 SVNのドキュメント に慣れることをお勧めします。

2
Michael Hackner