web-dev-qa-db-ja.com

SVNでのチェックアウトとエクスポートの違い

SVNチェックアウトとSVNエクスポートの正確な違いは何ですか?

私の知る限り、エクスポートにはメタデータを含む.svnディレクトリが含まれておらず、チェックアウトにはその.svnディレクトリが含まれていました。しかし、私の同僚は、チェックアウトでありSVNリポジトリからエクスポートされたソースからコンパイルされたものに対して異なる動作があるという最近の問題を抱えていました。両方とも正しくコンパイルされましたが、svn exportからコンパイルされたものは機能しますが、チェックアウトされたものはまったく機能しません。

PS:コンパイルされているのは、組み込みデバイスで使用されているLinux 2.4カーネルです。イメージは正しくコンパイルおよびロードされますが、チェックアウトされたイメージは機能しません。これは、insmod中にカーネルパニックを引き起こします。なぜこれが起こるのでしょうか?

PPS:チェックサムおよび差分ツールを試して、SVNからエクスポートおよびチェックアウトされた2つのディレクトリの違いを確認しました。 .svnディレクトリを除き、両方とも同じです。

72
andycjw

svn exportは、リビジョンからすべてのファイルを抽出するだけで、リビジョン管理を許可しません。また、各ディレクトリに.svnディレクトリが散在することもありません。

svn checkoutを使用すると、作成したディレクトリでバージョン管理を使用できます。 svn updatesvn commitなどの標準コマンド。

101
gak

あなたが述べたように、チェックアウトには.svnディレクトリが含まれます。したがって、それは作業コピーであり、コミットを戻すための適切な情報を持っています(許可がある場合)。エクスポートを行う場合、リポジトリの現在の状態のコピーを取得するだけであり、変更をコミットする方法はありません。

11
notbenh

チェックアウトを再実行していますか、既存のディレクトリにエクスポートしていますか?

あなたがいる場合、チェックアウトは作業コピーを更新します。これにはファイルの削除も含まれます。

ただし、エクスポートはすべてのファイルをリポジトリから宛先に単に転送します。宛先が同じディレクトリである場合、リポジトリで削除されたファイルは削除されません。

リポジトリで削除されたファイルに依存しているため、コピーをエクスポートするだけで機能しますか?

8
exception

ビルドプロセスがサブディレクトリを調べて、そうすべきでないものを含めている可能性はありますか?ところで、法的チェックアウトを実行してから、.svnとそれに含まれるすべてを削除できます。これにより、エクスポートと同じ結果が得られます。メタデータを削除する前後に、それをコンパイルしてみてください。

6
gbarry

(ジェラルドの答えを補完するために...)さらに微妙な違いは、コマンドが:

svn checkout ...repos_location/my_dir .

my_dir内のファイルを現在のディレクトリに(.svnフォルダーとともに)配置します

svnの特定のバージョンでは、コマンド:

svn export ...repos_location/my_dir .

my_dirというフォルダーを現在のディレクトリに作成し、エクスポートしたファイルをその中に配置します。

2
Robino

プロジェクトをアップロード(または誰かに提供)する場合は、エクスポートを使用します。プロジェクトで作業している場合は、チェックアウトを使用します。

1
Pawka

追加の黙想。あなたはinsmodがクラッシュすると言いました。 Insmodはモジュールをロードします。モジュールは、カーネルの構築とは別のコンパイル操作で構築されます。カーネルとモジュールは、同じヘッダーなどから構築する必要があります。すべてのモジュールはカーネルのビルド中にビルドされますか、それとも「既存」ですか?

もう1つのアイデア、および私がほとんど知らないものはsvn externalsです。これは(使用する場合)プロジェクトにチェックアウトされるものに影響を与える可能性があります。エクスポート時にこれが異なるかどうかを確認します。

1
gbarry

非常に単純な違いです。プロジェクトの構造だけを表示したい場合は、エクスポートに進みます。

また、ファイルを操作する場合は、作業コピーを作成するメタデータを含む.svnフォルダーが含まれているため、チェックアウトする必要があります。そうしないと、エクスポート時にエラーが発生します。

もしあなたがそうするなら svn exportそして、いくつかのファイルを編集してからコミットすると、エラーが発生します。

../../xxxは作業コピーではありません。

0
SteveScm