2010-08-12 124 views
2

我正在写一套django应用程序,并希望使用Hg进行版本控制。我希望每个应用程序独立于其他应用程序,因此在每个应用程序中都可能有一个静态媒体目录,其中包含我不想在版本控制下使用的图像。换句话说,二进制文件不会全部在一个中心位置水银(Hg)和二进制文件

我想找到一种方法克隆存储库,其中将包括图像文件的副本。如果我进行合并时,如果在一个仓库中有一个图像文件,而另一个仓库中没有图像文件,那么这将会很棒,因为会有某种警告。

目前我使用python脚本来查找图像和其他二进制文件在一个回购,但不是其他。但很多人必须面对这个问题,所以必须有一个更强大和更优雅的解决方案。

还有一件事...由于我不想进入的原因,通常我的一个回购站位于Windows机器上,另一个位于Linux上。所以跨平台解决方案会很好。

回答

2

Mercurial可以跟踪任何类型的文件,对于二进制文件如果有变化,那么整个文件将被替换,而不仅仅是更改。

如果一个回购没有包含文件就会得到一个警告,这就是DVCS的一点,就是回购相关但是是自治的。您可以随时查看并查看在同步或合并操作期间添加了哪些文件。

+0

谢谢。是的,我知道我可以将任何文件类型放入Hg中。但是,我相信当二进制文件发生变化时,旧的二进制文件将被Hg保留。如果您想恢复之前状态下的文件,这很好。但也可以使回购巨大。 因此,现在,我将继续使用python来管理图像文件。这里有一个有趣的片段,我从中吸取了一些想法: http://code.activestate.com/recipes/576777-simple-ftp-mirror/ 如果我得到时间,我会发布我的版本到activestate。 – Chuck 2010-08-20 15:18:19

7

由于Mercurial 2.0扩展largefiles现在已包含在主要发行版中。该扩展可以保存和管理“正常”存储库以外的大型文件,从而获得DCVS的好处,但没有指数大小和处理时间增长的好处。

沿着类似路线工作的其他分机是SnapExtensionBigFilesExtension。但是,这两个不与Mercurial一起发布(您必须手动获取它们)。

0

当前Mercurial book(by Bryan O'Sullivan)表示,Mercurial商店也会针对二进制文件进行区分。这很有效,显然取决于二进制文件变化的性质。