2013-04-06 4 views
1

У меня есть репо с несколькими пользователями. Мне нужно сделать скрипт python для получения последних коммитов конкретного пользователя. Как мне это сделать с помощью меркуриального?hg log: как получить последнюю фиксацию определенным пользователем?

Я думал о вызове команды hg log через звонок subprocess Python. Проблема заключается в том, как я должен вызвать команду hg log, чтобы она сообщала мне последние журналы пользователя.

+0

Что для вас значит "последние коммиты"? –

ответ

6

Легкий (но не эффективный или элегантный способ)

  • hg log -u USERNAME

или (с revsets)

  • hg log -r "author(USERNAME)"

с добавленной стоимостью

Если строка начинается с «re:», остальная часть строки рассматривается как регулярное выражение. Чтобы соответствовать пользователю, который фактически содержит «re:», используйте префикс «literal:».

+0

Возможно, ссылки на ['hg help log'] (http://www.selenic.com/hg/help/log), [' hg help revsets'] (http://www.selenic.com/hg/ help/revsets) и ['hg help templates'] (http://www.selenic.com/hg/help/templating). –

+0

Кроме того, возможно добавить параметр '-l' в примеры (или' limit()/last() 'функции отсрочки). –

1

Я думаю, вы сможете получить последнюю фиксацию одного пользователя, вызвав что-то вроде этого с помощью системного вызова. (Из командной строки версии следующим образом.)

$ hg log -u your-user-name | head -5 

head -5 дает весь сокращенный hg log выходу для последней ревизии для вашего-имени-пользователя, который включает в себя пять строк: ревизии, тег, пользователь, дату и резюме , Если вы хотите только набор изменений, вы можете использовать что-то в этих строках. (Версия для командной строки, еще раз.)

$ hg log -u [email protected] | head -1 | awk '{print $2}' 

Комментарии предполагают, что это делает необоснованные предположения о выходном формате. Согласен.


На основе замечаний, это, кажется, выражение лучше для получения последней фиксации от пользователя.

hg log -r "last(author('[email protected]'))" 
hg log -r "last(author('Fred Flintstone'))" 

Чтобы получить последние три. , ,

hg log -r "last(author('[email protected]'), 3)" 
hg log -r "last(author('Fred Flintstone'), 3)" 
+0

Трубопровод - плохая идея (tm). Параметры шаблонов и логов лучше работают при одном вызове журнала –

+0

, и awk корректно печатает csrt-hash ** только ** с переопределенным как «:» FS –

+0

Как уже отмечалось, * все, что вы сделали с помощью трубопроводов, можно сделать более эффективно и безопасно использовать параметры журнала. Пожалуйста, прочтите ['hg help log'] (http://www.selenic.com/hg/help/log), [' hg help revsets'] (http://www.selenic.com/hg/help/revsets) и ['hg help templates'] (http://www.selenic.com/hg/help/templating). –

Смежные вопросы