ディレクトリのサブセットを含み、すべてのSubversionファイルを除外するコードの配布アーカイブを作成したいと思います。リリースのバージョンを識別するルートフォルダーを使用してファイルをアーカイブに追加し、アーカイブが解凍されたときにこのルートフォルダー(つまりmyAppV1.3)を使用するようにします。
このための「スイッチ」が見つからないため、現在すべてを圧縮して(7Zip除外を使用して不要なファイルを除外して)、指定したフォルダーに解凍する必要があります。次に、そのフォルダ全体を再度圧縮します。
私が使用している現在の3ステップのプロセスの例:
c:\dev\myApp>7za -xr!?svn\* a myApp_temp.Zip @listOfFilesInRelease.txt
c:\dev\myApp>7za -omyAppV1.3 x myApp_temp.Zip
c:\dev\myApp>7za a myAppV1.3.Zip myAppV1.3
これを行うためのよりエレガントな方法はありますか?
JohannesRösselから提供された情報とインスピレーションに基づいて(基本的に、圧縮アプリケーションは私がやろうとしていることをサポートしていません)、特定のシナリオを解決するためのよりエレガントな方法を考え出しました。これはアーカイブの問題の名前付きルートフォルダを解決しませんが、答えを探しに来る人々に、自分の問題を見る別の方法を提供する可能性があります。
3ステップのアーカイブプロセスを回避するための私の解決策は、最初の2つのステップを名前付きフォルダーへのソース管理チェックアウト(タグによる)に置き換えることでした。
これは、最初に問題を攻撃する方法と同様に、はるかに洗練されたソリューションです(最終的な配布がソース管理にあるものと一致することを保証するため)。
私が知っているほぼすべての圧縮形式またはそれらを処理するアプリケーションでは、このようになっています。ただし、Zipファイル形式を見ると、理論的には可能だと思います可能性があります。どうやら、これを実装するインセンティブはあまりありません。
しかし、そもそもなぜフォルダを含めないのですか?
あなたは2つのステップのプロセスとしてそれを行うことができます
svn export path-to-repositoryroot-dir-name
7zaアーカイブの名前root-dir-name
Root-dir-nameは、ファイルをエクスポートするディレクトリの名前です。
あなたの例では、
svn export path-to-repository MyAppV1.3
これにより、プロジェクトのソースのみがMyApp1.3という名前のディレクトリにエクスポートされ、すべてのSubversionダイルが省略されます。この後、7-Zipを使用してアーカイブを作成します。
7za a MyAppV1.3.Zip MyAppV1.3
これにより、ソースをエクスポートしたフォルダーからZipアーカイブが作成されます。アーカイブのルートディレクトリには、MyAppV1.3という名前のファイルがあります。もちろん、7zを拡張機能として使用して、圧縮率を高めることもできます。
コマンドラインSVNクライアントの場合は SlickSVN をお勧めします。