(也发布在ServerFault,但意识到这里会有更多的 SVN/TFS 用户)
底线问题:
- 是否可以创建一个运行无人值守服务的 SVN/TFS 存储库,该服务会静默检查对目标文件夹中的文件所做的所有更改以及更改者的用户名?它必须对进行文件更改的人完全不可见。
这是我的问题的背景:
许多人为我们的 ASP.NET 网站部署更改……设计师部署 HTML 和 CSS 更改,.NET 开发人员部署 ASPX、DLL 文件,图形设计师部署图像等。
从理论上讲,所有这些部署都是以一种非常可控的方式完成的——源代码在 SVN 中维护,部署包被创建和版本控制,部署首先在预生产站点上进行测试,实时部署被记录。从理论上讲,我们总是知道哪些文件被更改、何时、为什么以及由谁更改。
但是,有时有人直接在现场进行更改并绕过所有程序。通常这是因为一些紧急情况。有时所做的更改会导致网站出现问题……而且没有人拥有它!
所以我们正在寻找的是某种无人值守的服务,它可以捕获服务器上特定文件夹的所有文件更改。它应该在文件更改发生时“签入”文件更改,即捕获整个文件的新版本,并捕获用户的 Windows 登录。换句话说,每个文件都会获得对其所做更改的历史记录,就像 SVN、TFS 等一样。我们应该能够在文件历史记录中的版本之间进行比较。它捕获的 99% 应该是通过适当的程序进行的更改 - 但它也应该包含 1% 没有的更改。
需要明确的是 - 我们不是在寻找发送“文件完整性”警报的服务,如 OSSEC。我们只希望捕获每个文件更改,因此如果出现问题,我们可以检查更改日志并找出在常规程序之外做了什么。此外,它显然应该是完全自动化的——要求用户遵循额外的程序不是我们在这里所追求的!
此外,定期进行备份然后查找它们之间的差异不是我们想要的,因为这不会告诉我们是谁进行了更改。