Создайте файл журнала из Perforce для использования с Gourse
Я пытаюсь сгенерировать файл журнала производительности с помощью awk, который затем может быть использован с Gource.
Gource позволяет генерировать анимацию истории ревизий файла / проекта.
Я попытался следовать приведенным здесь примерам, но они не будут работать для моего депо (хотя они работают и для Adobe!)
Я также попробовал сценарий на странице здесь, который говорит,
p4 changes //depot/path_to_files/|awk '{print $2}'|p4 -x - describe -s|awk '(/^Change / || /^... /) {if ($1 == "Change") {u=substr($4,1,index($4,"@")-1); t = $(NF-1) " " $NF; gsub("/"," ",t); gsub(":"," ",t);mktime(t);} else {if ($NF=="add") {c="A";} else if ($NF=="delete") {c="D";} else {c="M";};f=substr($2,3,index($2,"#")-3);print time "|" u "|" c "|" f;}}'|sort -n
но я получаю
"awk: строка 0(NR=1): переменная"mktime"не может использоваться как функция"
ошибка.
Если у кого-то есть идея, что происходит не так, я хотел бы услышать от вас!
2 ответа
mktime
такое расширение GNU Awk:
Чтобы упростить обработку таких файлов журналов и создавать полезные отчеты, gawk предоставляет следующие функции для работы с метками времени. Они являются расширением Gawk; они не указаны ни в стандарте POSIX, ни в любой другой известной версии awk
https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html
Просто замени awk
с gawk
если он доступен в вашей системе:
p4 changes //depot/path_to_files/ \
| awk '{print $2}' \
| p4 -x - describe -s \
| gawk '(/^Change / || /^... /) { \
if ($1 == "Change") { \
u=substr($4,1,index($4,"@")-1); \
t = $(NF-1) " " $NF; \
gsub("/"," ",t); \
gsub(":"," ",t); \
time = mktime(t); \
} else { \
if ($NF=="add") { \
c="A"; \
} else if ($NF=="delete") { \
c="D"; \
} else { \
c="M"; \
}; \
f=substr($2, 3, index($2,"#")-3); \
print time "|" u "|" c "|" f; \
} \
}' \
| sort -n
Я написал скрипт Python для преобразования истории Perforce в файл журнала, совместимый с Gource. Он также может получать последние изменения и добавлять их с момента последней синхронизации.