Mac"捆绑"文件版本控制的最佳方法
时间:2020-03-05 18:43:03 来源:igfitidea点击:
因此,我们知道很多Mac应用程序都使用"捆绑包":对于应用程序来说,它看起来像是一个文件,但实际上它是一个文件夹,其中包含许多文件。
为了使版本控制系统能够处理此问题,它需要:
- 检出目录中的所有文件,以便应用程序可以根据需要对其进行修改
- 添加应用程序已创建的新文件
- 标记为不再存在的已删除文件(因为应用删除了它们)
- 将其视为一项根本性的变更
关于使用现有版本控制系统解决此问题的最佳方法有什么想法?是否有任何版本控制系统更擅长于此领域?
解决方案
回答
Mercurial基于文件而不是目录结构的特定版本。因此,工作树是一个完善的存储库,不会在每个级别吐出.svn文件夹。
这也意味着被替换的目录(如应用程序或者其他捆绑包)仍会在修订控制下找到带有特定文件名的目录。文件名受到监视,而不是inode或者类似的东西!
显然,如果将新文件添加到捆绑包中,则需要将其明确添加到存储库中。同样,应该使用" hg rm"从捆绑软件中删除文件。
还没有用于OS X的不错的Mercurial GUI,但是,如果我们要做的只是添加/提交/合并,那么使用命令行并不难。
回答
正如Matthew所提到的,对于像git和mercurial这样的分布式SCM系统,应该不成问题。
如果我们需要使用Subversion或者CVS之类的集中式SCM,则可以将捆绑软件压缩(存档),然后再将其检入源代码管理。这可能会很痛苦,并且需要额外的步骤。在Tapestry Central上有一篇很好的博客文章:
Mac OS X捆绑包与Subversion
本文演示了一个ruby脚本,它可以为我们管理归档。