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脚本,它可以为我们管理归档。