我是一名纯粹的程序员/工程师(虽然我多年来一直与许多人一起工作并根据需要进行编码)。现在我发现自己需要设置版本控制环境。我熟悉SVN,但想知道它是否具有'功能'在设置之前遇到麻烦并确定要实现的文件结构。
在一个项目中,我有几个经常更改的文件,但我不想保留以前的版本,因为它们会快速吞噬磁盘空间。 SVN是否具有可以为存储库中的文件(或文件夹)设置属性以仅保留文件的最新版本的功能? (或者也许只是最后一个版本?)
如果SVN没有此功能,是否还有其他版本控制系统?
先谢谢你对这个问题的考虑......
答案 0 :(得分:2)
SVN会跟踪更改集,而不是整个文件,不能删除它们。
额外建议: 如果我是你,我不会担心回购的磁盘空间,或者可能需要花一些时间重新考虑为什么文件经常变化以至于整个磁盘空间都被填满。这需要版本控制吗?如果是这样,你可能真的不想吹走历史。
另外,我建议使用更现代的版本控制工具,如git或mercurial。
以下是关于使用git清除磁盘空间的类似帖子:
如下面的评论中所述,如果你是版本控制的新手,任何上述功夫都可能导致脚部受损;)
答案 1 :(得分:2)
我猜您所关注的文件根本不应存储在版本控制sytsem中。使用Apache Subversion或任何其他源控制系统的常用方法是不来存储从您自己的源文件(例如自动生成的文件,大型二进制文件或磁盘映像)构建的文件。换句话说,如果您构建可执行文件,则应该存储它的源代码,而不是已编译的可执行文件。
目前还不清楚您还关注哪种文件。文件类型和文件大小是什么?
如果文件是文本的,那么您不必担心存储库大小,请参阅@ ElmoVanKielmo对您的问题的评论。 Subversion非常有效地存储文本文件修订版之间的增量。
如果文件很大且是二进制文件,那么你仍然可以将它存储在Subversion存储库中,但是我不会在存储库中存储大于1GB的文件。
Apache Subversion没有此功能可以从存储库历史记录中完全自动删除文件。 Subversion is designed to never lose information that exists in the repository。但是,您可以将大文件存储在专用分支中,并使用repository history filtering随时轻松清理它。
请注意断开连接/分布式版本控制在存储大型二进制文件方面存在缺点:
使用Git,每个执行git clone
的人都必须使用所有版本的大型二进制文件下载整个存储库,因此可能耗费时间和带宽。我说Git比Subversion更不适合存储二进制文件。
...在设置它并确定什么之前的麻烦 要实现的文件结构。
安装和配置Subversion服务器根本不是问题。您可以查看the list of Apache Subversion Binary Packages以获得适合您平台的版本。配置服务器以通过HTTP(S) (Apache HTTP Server)或svn:// (svnserve)协议公开您的存储库。
如果您使用的是Windows,则可能需要尝试VisualSVN Server安装和配置完整的服务器软件包,只需点击几下即可为您节省大量时间。