mercurial log формат със състояния на файлове

Чудех се как да върна файлове, добавени/модифицирани/изтрити за ангажимент в такъв формат:

<modifier> file
<modifier> path/to/a/file
<modifier> path/to/another/file

В git правя това: "git show --pretty="format:" --name-status commitish" и получавам:

D       file
A       path/to/a/file
M       path/to/another/file

За mercurial не мога да разбера как да го направя с шаблони. Имам стилов файл:

changeset = "{file_mods}{file_adds}{file_dels}"
file_add  = "A {file_add}\n"
file_mod  = "M {file_mod}\n"
file_del  = "D {file_del}\n"

и с този стил и команда "hg log -r commitish --style ~/.hgstyle" получавам почти това, което искам:

M path/to/another/file
A path/to/a/file
D file

Все още има един проблем с mercurial - файловете не са сортирани в добър ред.

Как да получа същия резултат като при git команда (с модификатори и правилно сортирани) на mercurial?


person Titas    schedule 12.05.2011    source източник


Отговори (4)


Няма директен начин да използвате машината за шаблони, но можете да опитате:

hg log --style ~/.hgstyle -r <rev> | sort -k2

Това ще сортира изхода от командата log във втората колона с данни (т.е. имената на файловете).

person Tim Henigan    schedule 12.05.2011
comment
да, това е точно това, което искам ;), но бих искал да го направя без канали за сортиране, ако е възможно - person Titas; 12.05.2011
comment
всъщност сортирането по канали не сортира буквено-цифрово, така че трябваше да направя сортирането в ruby ​​по-късно в кода. - person Titas; 28.05.2011
comment
Здравейте момчета, споменато тук от въпроса ми: Предполагам, че няма начин за --template това, нали? - person Boaz; 15.02.2012

Опитайте тази:

hg stat --change THE_REV_YOU_WANT
person Ry4an Brase    schedule 12.05.2011
comment
Това все още изглежда първо сортира списъка по състояние, така че все още е необходимо прехвърляне към sort -k2. - person Tim Henigan; 12.05.2011
comment
Това е документирано както във вградената помощ (hg help status), така и в страницата на ръководството selenic. com/mercurial/hg.1.html#commands . Той е сравнително нов, но ако работи във вашата версия, той е документиран там. - person Ry4an Brase; 12.05.2011
comment
Току-що го забелязах в документалния низ. Моето местно репо за източник на Hg беше актуализирано до по-стара версия. - person Tim Henigan; 12.05.2011
comment
Това е добър подход (не знаех, че можете да подадете --change на st), но не сортира за моята hg версия... 1.6.3 - person Titas; 12.05.2011
comment
Да, трябва да направите сортирането външно -- Mercurial групира по статус, но sort -k2, което Тим посочва, ви осигурява останалата част от пътя. - person Ry4an Brase; 12.05.2011

Може би не съм разбрал правилно, но ако искате първо изтриване, след това добавяне и накрая модификации, просто променете първия ред на вашия стилов файл:

changeset = "{file_dels}{file_adds}{file_mods}"

Можете също да добавите табулация (\t) вместо интервал, ако искате да сте по-близо до изгледа на Git:

file_add  = "A\t{file_add}\n"
person krtek    schedule 12.05.2011
comment
Не искам първо изтриване, искам сортирано по азбучен ред, като в {files} - person Titas; 12.05.2011

Добавете това към вашия .hgrc файл

[alias]
prettylog = log -r : --template "{rev} | {date|shortdate} | {desc|strip|firstline}\n{file_dels % '  - {file}\n'}{file_adds % '  + {file}\n'}{file_mods % '  ~ {file}\n'}\n"

Той ще отпечата спретнато форматиран изход като този (2 е номерът на версията):

2 | 2014-03-21 | my new log format
  - js/remove_me.js
  + js/add_me.js
  ~ doc/modified_me.txt
  ~ www/index.html
person user    schedule 21.03.2014