4

Subversion リポジトリには、共有ファイルを含むいくつかのサブディレクトリと、各プロジェクトのサブディレクトリがあります。プロジェクトはsvn:externals、リポジトリから共有ディレクトリを取得してサブディレクトリとして設定するための相対プロパティを使用して設定されます。

たとえば、リポジトリは次のようになります。

クライアント
共有
ポータブル
アプリ1
app2

そしてapp1そのように持っていますsvn:externals

../共有共有
../ポータブルポータブル

そのため、チェックアウト時に、portablesharedサブディレクトリとして使用できapp1ます。

TortoiseSVN には、コミットを実行するとサブディレクトリapp1が自動的に検出されexternals、それらがすべて同じリポジトリの一部であることを認識し、すべての変更を同じコミットの一部としてコミットするという気の利いた機能があります。ただし、コマンドライン クライアントから同じ動作を取得する方法がわかりません。助言がありますか?

4

3 に答える 3

2

この機能はまだ実装されていません。以下はSVN版からの抜粋です。1.5本

おそらく最も残念なことに、externals 定義サポートを介して作成された作業コピーは、(svn:externals プロパティが実際に設定されたバージョン管理されたディレクトリで) プライマリ作業コピーから切断されたままです。そして、Subversion は依然として非ばらばらな作業コピーでしか動作しません。したがって、たとえば、これらの外部作業コピーの 1 つまたは複数で行った変更をコミットしたい場合は、それらの作業コピーに対して明示的に svn commit を実行する必要があります— プライマリ作業コピーでコミットしても、外部作業コピーに再帰することはありません。 .

SVN 1.6 のリリース ノートも確認しましたが、svn:externals に関連する 2 つの改善のみが行われました。これらは: svn:externals 内のファイルのサポートと、externals 定義内の通常のシェル引用規則のサポートです。

おそらく、これは実装する価値のある機能ではありません (これは私の見解でもあります)。一般に、svn:externals は、比較的安定したヘッダー/ファイルを、それらに依存するプロジェクト/アプリケーションに含めるために使用されます。通常、それらは特定のリビジョンのタグまたはパスを参照します。この場合、svn client が何をすべきかは、特に答えのない大きな問題です。

于 2010-07-02T20:47:51.573 に答える
0

少なくとも Subversion 1.6.12 では、コマンド ラインで明示的にパスを指定するという、非常に単純な解決策があることがわかりました。

たとえば、私が実行した場合

cd app1
svn ci file_in_repository.cpp shared portable

その後、Subversion は、私が望むように、、、およびすべてを 1 つのリビジョン内でコミットapp1sharedますportable。どうやら、コマンドライン クライアントはデフォルトでは外部を処理しませんが、外部が明示的に与えられていれば、単一のコミットを処理するのに問題はありません。

于 2011-02-17T16:16:27.243 に答える