Как получить сведения о списке изменений для предоставленных пользователей с указанной датой?

Мне нужно собрать Perforce Change List details для provided users и с предоставленным date - (ie... from 01-06-22 to 25-12-22) в формате csv.

Ожидаемый результат в csv для каждого списка изменений: -

С. Нет Имя пользователя Perforce Список изменений Дата отправки Рабочая среда Описание 1 дари.спитцер 123456 08.02.2022 Daryl_Spitzer_Workspace Исправлены проблемы с будильником 2 Шадкам.сан 78910 24-12-2022 Shadkam_san_Workspace Добавлена ​​поддержка PostgreSQL.

Большое спасибо за чтение, и любая помощь очень ценится.


68
1

Ответ:

Решено

Используйте p4 changes с флагом -u, чтобы указать пользователя и даты, указанные в качестве аргумента диапазона изменений:

C:\Perforce\workshop>p4 changes -u samwise @2009/01/01,2010/01/01
Change 7479 on 2009/11/12 by samwise@samwise-silver 'Fix typo in last change. '
Change 7113 on 2009/01/22 by samwise@samwise-silver 'Make VSStoP4 html page a redire'

Чтобы переформатировать это во что-то похожее на CSV в CLI, вы можете использовать флаг -F:

p4 -Ztag -F %user%,%change%,%client%,%desc% changes -u samwise @2009/01/01,2010/01/01
samwise,7479,samwise-silver,Fix typo in last change.

samwise,7113,samwise-silver,Make VSStoP4 html page a redire

Я бы лично использовал Python, а не Bash, чтобы довести это до желаемой формы:

import csv
from datetime import datetime
import sys
from P4 import P4

out = csv.writer(sys.stdout)
out.writerow([
    "S.No",
    "Perforce Username",
    "Change List",
    "Submitted Date",
    "Workspace",
    "Description"
])
my_users = {'samwise'}

with P4().connect() as p4:
    for i, change in enumerate(p4.run_changes('@2009/01/01,2010/01/01'), 1):
        if change['user'] not in my_users:
            # This makes it easy to handle multiple users
            continue
        out.writerow([
            i,
            change['user'],
            change['change'],
            datetime.fromtimestamp(int(change['time'])).date(),
            change['client'],
            change['desc'].strip()
        ])

производит:

S.No,Perforce Username,Change List,Submitted Date,Workspace,Description
1,samwise,7479,2009-11-12,samwise-silver,Fix typo in last change.
2,samwise,7113,2009-01-22,samwise-silver,Make VSStoP4 html page a redire