2014-03-27 111 views
3

我是新来的是一个纯粹的程序员/工程师(虽然我“需要”的编码有许多经过多年的努力和执行)。现在我发现自己需要设置一个版本控制环境。我熟悉SVN,但想知道有没有才去设置它的麻烦“功能”,并确定实施什么样的文件结构。颠覆功能

在一个项目中,我有几个频繁变化的文件,但我不想保留以前的版本,因为它们会很快吞噬磁盘空间。 SVN是否有一个功能,您可以设置该属性存储库中的文件(或文件夹)只保留最新版本的文件? (或者可能只是n个最新版本?)

如果SVN没有这个功能,那么有没有其他的版本控制系统呢?

预先感谢您的考虑这个问题的......

+2

你真的不需要它。 SVN只针对特定版本保留差异 - 而不是整个文件。就我个人而言,我从来没有听说有人因磁盘空间不足而因为一个SVN存储库, – ElmoVanKielmo

+0

@ElmoVanKielmo,虽然我同意你的观点,但你现在很幸运,因为使用不当,你现在很幸运能够遇到一个用SVN运行空间不足的人以往。我已经悔改了,但是,很久以前,在一个遥远的星系中......我使用SVN来存储经常变化的非文本资产,如图像,其他媒体和编译代码。从理论上来看,这似乎是一个好主意,可以集中并制作简单的发布过程和delpoyment(它的确如此),但现实的锤子最终陷入了困境...... – Ray

回答

2

SVN跟踪变更集,而不是整个文件,不,你不能删除它们。

额外的忠告: 我不担心磁盘空间用于回购协议,如果我是你,也许需要一些时间重新考虑为什么文件改变非常频繁,整个磁盘空间得到填补。这是否需要版本控制?如果是这样,你可能不会真的想吹走历史。

此外,我建议使用更现代的版本控制工具,如git或mercurial。

下面是关于使用git结算的磁盘空间,类似的帖子:

如在下面评论指出,如果你是这个新的版本控制任何的上述功夫可能会导致脚部断裂;)

+0

我也推荐这样做,但它们不提供解决方案/对这个问题的答案。 –

+0

@ErwinBolwidt看到我更新的答案,其中git可能有所帮助 – Ray

+0

是和不是 - 初学者当然不应该用'git'做什么,因为它重写了历史记录,所以需要与克隆所修改存储库的每个人进行协调通过这种方式。 –

2
  1. 我猜测,文件您担心不应该被存放在版本控制sytsem可言。常见的方式使用Apache Subversion或任何其他来源的控制系统是来存储从自己的源文件(例如自动生成的文件,大型二进制文件或磁盘映像)建立文件。换句话说,如果你建立一个可执行文件,你应该保存它的源代码,而不是编译的可执行文件。

  2. 目前还不清楚您关注的文件类型是什么。什么是文件类型和文件的大小?

    • 如果该文件是文本,那么你不必担心存储库的大小,请参阅@ ElmoVanKielmo对你的问题发表评论。 Subversion非常有效地在文本文件的修订之间存储变化量。

    • 如果文件很大并且是二进制的,那么你仍然可以将它存储在Subversion版本库中,但是我不会在版本库中存储大于1GB的文件。

  3. Apache Subversion没有这样的功能,可以从存储库历史记录中完全自动删除文件。Subversion is designed to never lose information that exists in the repository。但是,您可以将大文件存储在专用分支中,并使用repository history filtering不时将其清理干净。

  4. 要注意的是断开/分布式版本控制有它在存储大量的二进制文件方面的不足:

    使用Git,大家谁不git clone必须下载整个仓库与大型二进制文件的所有版本,因此可能会耗费时间和带宽。我会说Git不适合存储二进制文件,而不是Subversion。


...才去设置它,并确定哪些 文件结构来实现的麻烦。

安装和配置Subversion服务器并不麻烦。您可以通过the list of Apache Subversion Binary Packages查看为您的平台获取一个。将服务器配置为通过HTTP(S) (Apache HTTP Server)svn:// (svnserve)协议公开您的存储库。

如果您使用的是Windows,则可能需要尝试VisualSVN Server,它们可以通过几次点击来安装和配置完整的服务器软件包,从而为您节省大量时间。