簡體   English   中英

如何使用javascript,php,shell腳本從xml顛覆日志文件中獲取每天的提交次數?

[英]how to get number of commit each day from xml subversion log file with javascript, php, shell script?

具有XML Subversion提交日志:

<?xml version="1.0"?>
<log>
<logentry
   revision="2">
<author>20070299</author>
<date>2012-06-06T05:23:21.999470Z</date>
<msg>add part</msg>
</logentry>
<logentry
   revision="1">
<author>20070299</author>
<date>2012-05-22T08:35:55.663875Z</date>
<msg></msg>
</logentry>
</log>

我想要一個結果,該結果是按日期和每天在我的網站php-javascript上提交的次數分組的。 與此類似:

date[0]=2012-05-22
value[0]=1
date[1]=2012-05-23
value[1]=0
...
date[15]=2012-06-06
value[15]=1

有解決方案嗎?

我咨詢了此鏈接

但這不起作用,非結果非錯誤日志(Apache,PHP),而且我不知道如何從PHP代碼向JavaScript代碼發送$ number []

您可以使用XPath:

$ xmllint --shell foo.xml

/ > cat //log/*[@revision]/@revision
 -------
 revision="2"
 -------
 revision="1"
/ > cat //log/*[@revision]/date/text()
 -------
2012-06-06T05:23:21.999470Z
 -------
2012-05-22T08:35:55.663875Z
/ > 

它在外殼中,但是您可以使用任何喜歡的語言在XPath表達式上進行迭代。

如果這里有人知道如何告訴XPath僅獲取revision="2"的數字,請告訴我們=)

我意識到您正在尋求Linux解決方案,但是由於此處沒有提供任何幫助,因此是使用PowerShell(因此僅Windows)實現目標的一種方法。 也許通過介紹此算法,其他貢獻者可以為您將其映射到Linux Shell命令。

([xml](svn log -v --xml)).log.logentry |
Select-Object -Property `
        Author, `
        @{n='Revision'; e={([int]$_.Revision)}}, `
        @{n='Date';     e={Get-Date $_.Date  }}, `
        Paths | 
Group-Object {$_.Date.ToString("yyyy-MM-dd")} | 
Sort-Object name -Descending | 
Select-Object @{n='Date'; e={$_.Name}}, Count | 
Format-Table -AutoSize

您可能會猜測代碼在做什么,即使在PowerShell中沒有流利性也是如此,但這是關鍵點的摘要:

  • 第一行在所有日志/登錄節點之間建立隱式循環。
  • 第一條Select-Object語句(5行)提取出XML元素和屬性,將它們轉換為PowerShell對象的字段。 Revision和Date被壓縮為適當的類型,使它們比字符串數據更有用。
  • Group-Object語句將現在是真實日期的對象轉換為適合排序的格式。
  • 第二個Select-Object語句只是將默認組名(名稱和計數)修改為更相關的名稱(日期和計數)。
  • 最終的Format-Table使結果列的大小緊湊。

這是系統輸出的一部分:

Date       Count
----       -----
2012-06-29     4
2012-06-28     6
2012-06-27     8
2012-06-26    16
2012-06-25     1
2012-06-24     1
2012-06-22     5
2012-06-21     8
2012-06-20     8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM