根据团队内Git提交自动选举“每月最佳程序员”的工具。

安装: 29

依赖: 0

推荐者: 0

安全: 0

星标: 6

关注者: 6

分支: 0

开放问题: 10

类型:typo3-flow-package

v1.2.1 2014-10-09 17:24 UTC

This package is auto-updated.

Last update: 2024-09-06 10:30:23 UTC


README

这最初是一个有趣的工程——现在仍然如此:有一天我们在internezzo讨论了如何为员工颁发奖项,比如“本月最佳提交者”(因此得名“CoMo”)。

CoMo会从Git仓库中获取提交的元数据,将其存储在数据库中,进行汇总,并为每个人生成一些统计数据(这部分和一些趋势功能将很快添加)。

主界面看起来是这样的

Screenshot of CoMo in action

这些统计数据可以集成到办公室的辐射屏中,以公开宣传最活跃的员工。为了显示不同工具的输出并“翻页”,我们还额外构建了一个名为“radiate”的小型包装器。

但它更进一步:有一个命令控制器,可以每天运行一次,例如,从远程服务器通过Gitweb前端获取所有仓库的列表。这使得我们检测新添加的仓库变得非常容易,因为CoMo会自动检测到新添加的仓库。

关于仓库:远程仓库将首次克隆,然后仅从本地克隆中拉取更改以节省带宽和处理时间。对于位于本地(URL以file://开头)的仓库,不会进行克隆,其日志将直接从原始仓库位置读取。

这有意义吗?

嗯,基本上,一个人可以创建大量的小提交,然后他将成为每月的赢家。这是真的,当然也是一个事实。CoMo实际上更多关于乐趣。但是如果你和你的团队在提交到主分支之前运行代码审查系统(例如Gerrit),那么“合并到主分支”的更改数量当然就更有意义(你将直接看到那些试图用小提交作弊的黑羊)

功能列表

  • 自动从Gitweb前端获取仓库列表(例如,每天运行一次以检测新仓库)
  • 提取每个仓库的提交元数据
    • 仅提取最新的n天以节省资源(可配置)
    • 仅提取尚未提取的内容(例如,自上次提取运行以来新的提交)
  • 汇总提取的数据
  • 根据汇总数据自动选出赢家
  • 在选出新的奖项时向仪式主持人发送通知电子邮件(这样他就可以将实体奖项交给获奖者)
  • 一切都可以通过cron作业自动化
    • cron作业以可以定期触发且在无任务时退出的方式进行构建
    • 它们有一个“安静”标志
  • 显示多个大屏幕优化视图
    • 上个月的获奖者
  • 如果提交者的电子邮件地址有Gravatar图像,则会显示该图像——如果没有肖像,则显示备用的像素图像

配置选项

  • maxDaysToFetchFromGitLogHistory: 100

    定义我们在git日志中要提取提交多远的历史(以避免提取和汇总例如10年的提交数据,然后只为最后一个月左右选出奖项)。

  • cacheBasePath: %FLOW_PATH_DATA%Temporary/

    设置用于在数据提取之前本地克隆远程仓库的基本目录。

  • whoGetsCredits: author

    定义了谁将获得积分,默认为作者,通常是创建变更的人,通常也是提交变更的人。整个设置都可以配置,以便在您想将积分授予提交者的情况下使用。

    允许的值:“author”和“committer”

    自v1.2.0版本起

  • sendNotificationMailsForCoderOfTheMonth: FALSE

    是否在新选出的每月程序员选举后向仪式主持人发送邮件

  • sendNotificationMailsForTopicAwardWinner: FALSE

    是否在新选出的主题奖项获得者选举后向仪式主持人发送邮件

  • ceremonyMasterEmail: mario+como@rimann.org

    仪式主持人的电子邮件地址(在选出新奖项时接收通知)

  • senderEmail: como@example.org

    发送者电子邮件地址

  • senderName: CoMo

    邮件的发送者姓名

设置方法

当然,为了使系统正常运行,您需要有一个TYPO3 Flow设置,并将此软件包安装到其中(它位于packagist上,名称为mrimann/como。然后您需要在命令行上执行以下命令 - 或者更好的方法是使用crontab运行它们,让系统自行工作

添加新的存储库

要监控的存储库列表保存在数据库中。如果您运行一个托管您的Git存储库的服务器并且安装了Gitweb前端,那么CoMo实际上可以获取所有存储库的列表,例如每天一次自动添加新的存储库,以便它们也能得到监控。

./flow help repodetectorgitweb:fetchrepos

这将显示如何使用此命令的所有选项。

处理数据

有两个命令处理整个数据处理任务。只需执行以下两个命令即可处理数据

./flow metadataextractor:processrepositories
./flow dataaggregator:processcommits

选举每月程序员

基于现在处理过的(聚合)数据,如果执行以下命令,CoMo可以现在选举每月程序员

./flow election:electlastmonth

这将选举上个月的程序员(因为本月尚未结束,所以还不能选举)。

如何贡献?

如果您发现有问题或想提出新功能,请随时提交新问题。如果您想贡献时间和提交代码更改,我非常期待查看您的拉取请求!

如果您想与我讨论新功能,请直接给我发邮件。

想让我高兴吗?

这里有一份让我高兴的事情清单,这会让我继续做类似的事情:)

许可协议

根据宽松的MIT许可证许可 - 享受它吧!