2008-08-25 15 views
6

Macの多くのアプリケーションが「バンドル」を使用していることが分かります。アプリケーションには1つのファイルのようですが、実際にはたくさんのファイルがあるフォルダです。これを処理するためのバージョン管理システムについてはMacの「バンドル」ファイルのバージョニングに最適なアプローチ

が、それはする必要があります、

  • チェックアウトディレクトリ内のすべてのファイルなので、アプリは、チェックイン時
  • それらを必要に応じて変更することができます
    • 変更されたコミットファイル
    • アプリケーションが作成した新しいファイルを追加します。
    • 削除されたファイルは削除されました(アプリはそれらを削除したので)

1つのアトミック変更として、既存のバージョン管理システムでこれを処理するための最良の方法上の任意のアイデアを、これを管理しますか?この領域では、バージョン管理システムがより熟達していますか?

答えて

1

gitとmercurialのような分散型SCMシステムでは、マシューが言及したように問題にはならないはずです。

SubversionやCVSなどの中央集中型SCMを使用する必要がある場合は、バンドルをソース管理にチェックインする前に解凍(アーカイブ)することができます。これは痛みを伴うことがあり、余分なステップを必要とします。タペストリー中央でこの程度の良いブログの記事があります:

Mac OS X bundles vs. Subversion

この記事はあなたのためのアーカイブを管理Rubyスクリプトを示しています。未来から

2

特にMercurialはディレクトリ構造ではなく、ファイルに基づいています。したがって、本格的なリポジトリである作業ツリーは、各レベルの.svnフォルダを吐き出さない。

これは、アプリケーションや他のバンドルのように置き換えられたディレクトリでも、リビジョン管理下で特定のファイル名のコンテンツが見つかることを意味します。ファイル名は監視されていますが、inodeやそれに類するものはありません!

明らかに、新しいファイルがバンドルに追加された場合、これを明示的にリポジトリに追加する必要があります。同様に、バンドルからファイルを削除するには、 'hg rm'を使用する必要があります。

OS X用のまともなMercurial GUIはまだありませんが、追加/コミット/マージするだけであれば、コマンドラインを使用するのは難しくありません。

1

更新:

私が思い出す場合は、SVNでバンドルを管理の問題点は、バンドルを作ったびにクリア取得すべての.svnフォルダでした。 SVNがルート上の単一の.svnフォルダにすべてを格納するようになったので、これはもう問題ではありません。

1

2013年10月からiWork(Pages 5.0など)が「フラットファイル」(ZIP形式)での格納を許可しなくなり、バンドルとしてのみ使用できるようになりました。

この問題は、このような構造の内部にバージョン管理隠しフォルダを作成しているのではなく、Markが次のように述べています:ファイルの自動更新、アプリケーションの追加、この場合はiWork)、手動で行う必要はありません。

明らかに、iWorkとAppleは、iCloudのユーザビリティによってのみ悩まされています。しかし、私はMercurialリポジトリに.pages、.numbers、.keynoteを格納するための本物のケースを持っています。更新後、それはすべてを吹き飛ばします。何をすべきか?

補遺:

が見つかり 'hg addremove' 私のためのトリックを行います。

$ hg help addremove 
hg addremove [OPTION]... [FILE]... 

add all new files, delete all missing files 
関連する問題