16

想象以下情况:

  1. 感染病毒的文件已提交到 Subversion 存储库。
  2. 反病毒扫描程序在服务器上运行并且还扫描 Subversion 存储库。

Anti Virus 扫描程序将删除受影响的修订版或将其移至隔离区。结果是存储库损坏。

如果修订文件是可恢复的(从隔离区),如何解决这个问题?
我有一些目标要实现:

  1. 不允许从目录中禁用或排除 AV。
  2. 病毒感染文件不得存储在存储库中
  3. 存储库必须一致且可用。

这个小问题最好的解决方案是什么?

4

4 回答 4

16

常见问题解答

在某些特殊情况下,您可能想要销毁文件或提交的所有证据。(也许有人不小心提交了一份机密文件。)这并不容易,因为 Subversion 被刻意设计为永远不会丢失信息。修订是相互依赖的不可变树。从历史中删除修订会导致多米诺骨牌效应,在所有后续修订中造成混乱,并可能使所有工作副本无效。

然而,该项目计划在某一天实施一个 svnadmin obliterate 命令,该命令将完成永久删除信息的任务。(见问题 516。)

同时,您唯一的办法是 svnadmin 转储您的存储库,然后通过 svndumpfilter(不包括错误路径)将转储文件传送到 svnadmin 加载命令中。有关这方面的详细信息,请参阅 Subversion 手册的第 5 章。

于 2010-05-27T14:37:17.670 回答
3

最简单的?从病毒提交之前的备份中恢复...

于 2010-05-27T14:37:00.977 回答
0

如果您以文件模式创建存储库(每个源文件一个 repo 文件),那么您可能可以修复/编辑/替换受感染的文件。
如果你在 DB 模式下创建它,那就更难了——你可以 svndump 然后 svncreate 一个新的 repo,但是从病毒扫描中排除 SVN 存储库可能更容易

于 2010-05-27T14:40:12.030 回答
0

“不允许从目录中禁用或排除 AV。”

与您的 IT 部门合作,将您的存储库添加到排除项中。最好,如果 AV 支持“仅信息模式”,请使其在仅信息模式下与您的存储库一起使用。大多数时候,这种旧病毒只是误报。添加预提交挂钩以对任何文件进行病毒扫描,如果该文件被病毒标记,则拒绝提交。

如果 AV 报告旧文件被感染,请检查是否误报。如果不是,并且文件确实是旧病毒,只需将其删除并完全忽略它在您的历史记录中的存在。

于 2017-08-04T23:44:13.367 回答