Subversion是否保存已删除的文件?

3
我正在使用一个由慷慨的网站免费提供的Subversion存储库。这意味着我只有200MB的存储空间可用于存储库。尽管如此,我并不抱怨,因为我认为这非常慷慨,并且足以满足我的源代码需求。
然而,我偶尔会使用Subversion来存储一些较大的文件类型,仅仅是因为它的强大之处在于当我想要“回到过去”时,可以帮助我解决问题。我是一个相当杂乱无章的人,拥有像专门的版本控制系统这样的东西来帮助我整理事物真的非常有帮助。
那么,我想知道的是,我的云端存储库是否会“扣留”我可能错误地添加到版本控制中的大型文件。假设我向Subversion存储库中添加了几个大型文件(比如说很多2MB的JPEG图片),然后在随后的提交中稍微编辑了一下它们,并且还提供了一些不必要的冗长提交消息注释作为日志。然后我意识到我不再需要这些JPEG图片中的任何一个,于是将它们删除了。
既然我应该能够在任何以前的提交号码上检出存储库,包括我最初添加文件的那个提交号码,那么即使我稍后从存储库中删除了它们,实际的存储库是否会永远保留它们以确保检出能力?
如果是这种情况,那么是否有删除这些数据的条款?如果我的存储库因此类“一次性”数据而变得臃肿(例如我用完我的200MB配额,仍然想在我的编程目的中使用我的存储库),那么肯定存在某种方法来减少这些数据吧?
抱歉事先没有研究过这个话题,现在已经很晚了。

正如你从答案中肯定会发现的那样,源代码版本控制不是处理二进制文件的好选择。 - R. Martinho Fernandes
4个回答

3

是的,“删除”的文件仍然会在SVN存储库中。


3
该仓库一定会保留数据,正确的技术术语是"删除"。这里有一个链接,说明了为什么Subversion没有这个功能:链接
在接下来的1.7 / 1.8版本中也不会出现此功能。Subversion的路线图在这里
由于您正在使用托管的Subversion,请与主机检查是否允许在服务器上远程执行svndumpfilter命令。

+1 鼓励一个好的第一次回答。需要注意的是,正如Jacco和jdehaan在他们的回答中指出的那样,svndumpfilter将允许您转储经过过滤的列表。 - James Skemp
第一个链接现在似乎已经失效了。 - Troyen

2
“那是否意味着,即使我稍后从仓库中删除它们,如果要确保检出能力,则实际的仓库将永远保留它们?” “是的。” “如果是这样,我想有删除这些数据的条款吗?” “不,没有。但是,您可以将存储库转储到文件中,切掉不需要的内容,重新编号修订版,并将其加载回新存储库。但要小心... 有一些过滤工具可用于帮助执行此任务。该命令称为svndumpfilter。”

2

源代码控制系统花费了很多精力确保您可以返回到任何时间点,并且在特定的修订号中,所有数据都可供您使用,就像它以前一样。

版本控制的整个重点是确保没有任何内容被永久删除或覆盖。因此,“删除”文件只会将其从当前视图中删除,而不会对先前的视图产生影响;对于先前的视图,该文件仍然存在。

有一些手动删除不需要的项的方法,但它们通常与用户友好性相距甚远。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接