我想在我的 hgweb 网络界面中嵌入由hgactivity创建的活动图。这样做的最佳方法是什么?
这是 hgactivity 图的屏幕截图:
它显示了一段时间内对 Mercurial 存储库的提交次数。
我想在我的 hgweb 网络界面中嵌入由hgactivity创建的活动图。这样做的最佳方法是什么?
这是 hgactivity 图的屏幕截图:
它显示了一段时间内对 Mercurial 存储库的提交次数。
您将遇到的困难是将图表放在哪里以便可以提供服务。如果您对每个人都可以看到的标准视图感到满意,则可以使用 cron 作业运行hg activity
并将图像保存到 hgweb 静态文件(css 等)中的标准文件名。然后只需调整您的 hgweb 模板以包含引用图像文件的 img 标记。如果您的 cron 作业定期(每天,每小时?)覆盖该文件,那么您会很高兴。
如果您需要更动态的内容(用户特定查询、特定日期范围等),您可能需要查看 (my) hg chart extension。它的功能不如完整,hg activity
但它确实具有吐出谷歌图表 API url 而不是图像文件的优势。例子:
https://chart.apis.google.com/chart?cht=lxy&chs=400x400&chd=e:AAAKAaAjAtA6BHBQBaBkBtB3CACKCUChCqC0C9DHDRDaDkDuD3EBEOEXEhExE7FIFRFbFlFuF4GBGOGeGyG7HFHOHbHlHyIFIVIiIyI8JMJcJlJyJ8KcK2LGLWL8MQMwNDNTNgNqNzOAONOaOjOtO3PAPKPUPdPnPwP6QEQNQXQhQqQ0Q-RORXRnR0SBSLSUSeSrS0S-TITRTeTuT7UIUVUeUoU1VFVPVbVoVyV8WFWPWYWiWsW1W.XJXSXcXmXvX5YGYSYfYpYzY8ZGZTZcZpZzZ8aGaQaZajata6bDbNbWbgbwcDcQcacjc0c9dHdQdadkdtd3eBeNeae3fEfOfXfnf0gOgegug4hBhVhhhrh1h-iIiSibiliyjFjVjlj.kSkckpk1lClSlflvmDmMmWmfmpmznAnJnTncnmnwn5oDoNoWogoqo2pApKpTpdpnpwp9qHqUqdqnq3rArRrkr0r-sKsXshsqs0tLtbtkt0uEuRuou7vFvOvYvivrv4wFwPwfwowyw7xFxPxYxlxvx4yFyVyfypyyy8zGzPzZzizsz20D0M0W0g0p0z081J1T1d1m1w152J2g3Q3q3z4E4Q4g4t5B5K5U5k5u536B6R6r677E7R7h707-8O8b8l8x879F9S9b9o9y97-P-f-o-y-8.F.P.Y.i.s.1..,VnFsKVETK.eWNyCaLTTrSnBdN.MKMVTTHuL8SLLBAbENHZD.HrE8CEKSC1G1H9CiSeJiMb..ItFLFDmnDBIhMKCVFcDbFaCAOuNUEsBtepD3DuBTA6DfGjBoDdDLAuHpAVFWEjI5CYCzAtGWGqFTAhfrDFGxHbFVNZBjE7EBAbDjEaK2CjJXAnHeDpFyGhRSD2OWGJajC.KGHreDISCqGtKVHUCZKbFtCHhId8GrB2EpHRJqItR5A5OSSrOJHgDpKmBHA4D2C1BbE4KBHbCtFHKQW7QpQuKRJDMSEGfDDrDZAeB2VqEPGkHlFHJrHuFFJ-IcB5DQFaGZAaArATA4AJALDaBmCTCkCoAlEtAkEPHpCwE.ETGbFfC9BZJtMJBNBwBPCZHzA3CEAUEiCBBqPdcDIwLnPjFPH3B9S-GNFbDqDaOfdOKcGDKaHeK8IODGJdDXCUCdHADbBQDKCIB1DGAzDCWKLREaCGAFAeA7DEPCA0BZC5FSc0OTC9N7ANKGDGQMEPPfN.BSFHBwJeHiH-FvJlXxEuF1K-M0COEbHHDfB-FKA-TpaADISdHoXiMUMGETE2HnBFBqIYAVATAWA2F5DOEELxNmElS-EDBFFRBBHaEFAyE2AbI9SHDKDSDSFqBtCyFQFZFeBCHhAuCKAibPDlCjXXMRDYKXCq&chxt=y,x&chxl=1:%7c05/03/05%7c03/17/06%7c01/30/07%7c12/15/07%7c10/29/08&chxr=0,0,7166
看起来像:
然后没有要保存或提供的文件。您调整模板以调用运行的小代码hg chart
,将 URL 插入页面的 HTML 中,然后让 google 创建和提供图像。
我想出了以下设置:
将文件夹活动添加到模板静态
在 hgwebconfig 中添加一个名为 activity 的更改组挂钩:
[hooks]
changegroup.activity = hg activity --filename /usr/share/mercurial/templates/static/activity/${PWD##*/}.png
${PWD##*/} 将替换为存储库的文件夹名称(挂钩脚本在存储库的根目录中运行)。在触发(推送或拉取一个或多个变更集)时,活动图将放置在(默认)模板文件夹的静态/活动文件夹中。
现在您可以将以下 HTML 添加到您偏好的模板页面
<img src="{staticurl}/activity/{repo}.png"/>
这将加载当前存储库的最新活动图。
警告:在创建图像之前激活此钩子后,您至少需要一次推送。
我开始了一个包含此构建的项目。您可以在 http://hg.python-works.com上看到一个演示,它基于 pylons 并具有活动图。