我正在为我的团队实施源代码控制。提出的一个外部要求是“经理/领导”想知道谁签出了哪个文件以及何时签出。不是真正的锁,他们只是想知道文件何时被取出以及由谁取出。这也是一个表演停止要求,超出了我的控制范围。
我主要看使用Subversion。我想如果我通过 Apache 使用它,那么我可以解析 HTTP 日志,除非已经有一个工具,要么是第 3 方网络日志分析工具,要么是直接为颠覆创建的工具。
还有其他流行的源代码控制工具可能具有这种功能吗?
我正在为我的团队实施源代码控制。提出的一个外部要求是“经理/领导”想知道谁签出了哪个文件以及何时签出。不是真正的锁,他们只是想知道文件何时被取出以及由谁取出。这也是一个表演停止要求,超出了我的控制范围。
我主要看使用Subversion。我想如果我通过 Apache 使用它,那么我可以解析 HTTP 日志,除非已经有一个工具,要么是第 3 方网络日志分析工具,要么是直接为颠覆创建的工具。
还有其他流行的源代码控制工具可能具有这种功能吗?
免费的源代码控制系统不会向您提供这些信息,因为它们在与服务器断开连接的情况下工作 - 您可以“获取”一个文件,但您不必告诉服务器您已更改它,直到您来检查in. 这本身就是一个经过深思熟虑的功能,因为这意味着您可以在路上、在家等地方工作,而不必被束缚在中央存储库上。
可以在颠覆中使用锁来获得类似的报告,但这不是一个很好的解决方案。它们旨在防止 2 个人同时修改一个文件,特别是在合并存在问题的情况下。也就是说,它们实际上并没有阻止某人在没有获得锁的情况下签入文件,所以它们充其量只是一个微弱的指示,而不是保证。
此外,更现代的分布式系统,如 git 或 mercurial 甚至都不能开始为您提供这些信息,存储库在您的机器上,而不是集中式的,并且返回原始的链接最好是微弱的。考虑一下 - 您有 5 个本地分支,您报告所有文件都针对原始分支进行了修改,还是仅报告活动分支?您可以从已经克隆的 repos 中克隆 repos,您遵循多少抽象级别才能到达“master”repo?谁来决定,你将如何配置那个主人是什么?Git 等人可以非常优雅地处理所有这些复杂性,但在这种情况下,“谁签出这个文件”的问题几乎毫无意义。
像 TFS 和 Perforce 这样的老牌支持者确实允许这样做。但我很好奇他们为什么需要这个功能,仅仅因为有人修改了文件副本在管理方面并不真正意味着任何东西,仍然可以使用存储库安全性非常有效地保护分支,任何任务跟踪系统,如 trac 或redmine 会告诉你谁在做什么,并与 svn 完美集成。
可能有第 3 部分应用程序会查找工作副本并将状态信息上传到中央报告服务器,但我还没有看到。它甚至可能值得制作一个。
作为开发人员,我会感到某种不适,但您的“经理”想要的是基于客户端的“间谍”程序。这可以实现为 eclipse 插件,例如它收集关于打开和编辑哪些文件或其他什么的静态信息。
附带说明:了解你的上司。如果他们还没有经历过缺乏合格的 IT 人员的情况,那么他们可能很快就会参加这样的课程。
良好的项目管理采用侵入性较小的方法来收集有关进度和有效性的信息。