web-dev-qa-db-ja.com

Subversion-SVNチェックアウトとSVN更新コマンドの違いは何ですか?

「SVN checkout」コマンドがSubversionリポジトリからファイルを最初に取得し、作業ディレクトリ/コピーにローカルに移動し、「SVN update」コマンドがファイルの変更を取得することを理解しています他の人が変更を加えた場合はリポジトリ。

しかし、「更新」は「チェックアウト」の特殊なケースにすぎないようです。つまり、チェックアウトが発生すると、まだローカルに存在せず、したがってすべてのファイルが「変更」されているため、すべてのファイルを取得しています舞台裏では、これらのコマンドはほぼ同じことを実行しています。単純化の手段として、コマンドが個別に存在すると思いますか?

または、コマンド間に他の違いがありますか、たとえば、「SVN update」get files get new files(あなたが作業コピーにないリポジトリに存在するファイル)を取得するか、既存のファイルを更新するだけですか?

44
Emilio

私が見るように、大きな違いはcheckout 作成する 作業コピー。updateは、 既存の 作業コピー。

43
karoberts

svn checkoutは、リポジトリ内の指定されたリビジョン(デフォルトHEAD)の指定されたディレクトリからすべてのバージョン付きファイルをコピーし、ローカルマシンにコピーします。また、これらのファイルを作業用コピーにするすべての隠し.svnディレクトリとその中のメタデータも生成します。

svn exportは、リポジトリ内の指定されたリビジョン(デフォルトHEAD)の指定されたディレクトリからすべてのバージョン付きファイルをコピーし、ローカルマシンにコピーしますが、標準ディレクトリ階層を生成します。 (notは、更新またはチェックインできる作業コピーを生成します)。

svn updateは、変更を既存作業コピーに適用します。そうすることで競合が発見された場合、ユーザーは警告を受け、変更をコミットする前にこれを解決する必要があります。 svn commitを使用する場合、コミットする作業コピーが最新(つまり、HEADと同じリビジョン)であることが必要です。

13
Edd

更新により、チェックアウトされたバージョンがリポジトリ内の最新バージョン(または指定された他のリビジョン)に更新されます。作業コピーに変更を加えた場合、更新後も作業コピーに残ります。ファイルがリポジトリに追加または削除された場合、作業コピーに反映されます。ローカルコピーとリポジトリの両方に変更がある場合、SVNはすべての変更をマージしようとします。それが機能しない場合は、手動で解決する競合のフラグを立てます。

10
svinto

Subversionは、メタデータの隠しディレクトリを使用して、提供する機能を有効にします。これらの.svnディレクトリは、ディレクトリをSubversionの作業コピーにするものです。これらがないと、ディレクトリに過ぎず、Subversionはそれをあまり使用できません。

UPDATEは、Subversion作業コピーに対して実行される操作です。 .svnディレクトリも更新もありません。 CHECKOUTは、作業コピーを作成する操作です。

3
Eric Kolb

SVNの使用中、チェックアウトと更新の重要な違いは次のとおりです:checkoutコマンドは1回しか使用できませんバージョン管理下のローカルディレクトリとリポジトリ間の関係を構築するため)そして、すべてのファイルをルートリポジトリからローカル作業ディレクトリにコピーします。その後、checkoutを使用してローカルディレクトリのコピーを更新すると、次のようなエラーが生成されます。

svn:E175002:リポジトリに接続できません URL 'https:// ********'。

svn:E175002:OPTIONS要求は無効なXMLを返しました応答で:****。」

ローカルディレクトリで現在のバージョンを更新する唯一の方法は、svn updateコマンドを使用することです。

2
Z. Zhang

svn updateは、ユーザーバージョンから利用可能な最新バージョンへのファイルの違いのみをもたらします。違いがない場合、アクションはありません。

ただし、checkoutは新しいフォルダーを作成し、そのブランチのすべてのファイルをもたらします。チェックアウトは、作業中のブランチを絶えず変更する場合に有効な方法です。更新とは、トランクがあり、そのトランク上の他のユーザーが更新を行う必要がある場合です。

2
George