Когда я выполняю hg bisect в eclipse, мне нравится, что я могу видеть все плохие и хорошие вещи, которые я отметил в прошлом.
Есть ли способ получить эту информацию в командной строке?
Как вы можете получить текущее состояние (историю хороших/плохих ревизий) пополам из mercurial
Ответы (4)
Для этого есть предикат revset:
"bisected(string)"
Changesets marked in the specified bisect state (good, bad, skip).
Для справки в будущем, Mercurial 2.0 представит улучшенную версию (старая продолжит работать):
"bisect(string)"
Changesets marked in the specified bisect status:
- "good", "bad", "skip": csets explicitly marked as good/bad/skip
- "goods", "bads" : csets topologicaly good/bad
- "range" : csets taking part in the bisection
- "pruned" : csets that are goods, bads or skipped
- "untested" : csets whose fate is yet unknown
- "ignored" : csets ignored due to DAG topology
person
Idan K
schedule
13.10.2011
+1 за обнаружение биссектрисы. Есть ли шанс на рабочий пример? Я бы предположил что-то вроде:
hg log -r "bisected(good) or bisected(bad)"
?
- person icabod; 13.10.2011
Спасибо! Пара замечаний: мне пришлось обновить Mercurial 1.6 до 1.9, чтобы получить эту функцию. Я также не могу найти способ (в шаблонах справки hg) увидеть хорошее или плохое, чтобы сделать что-то вроде того, что предложил icabod. Было бы обидно, если бы потребовалось делать два отдельных журнала, а затем сортировать их вместе для визуализации, но, похоже, это так. (Какой-нибудь способ получить хорошие и плохие результаты в журнале?)
- person Joshua Goldberg; 13.10.2011
Джошуа: то, что написал icabod, даст вам как хорошие, так и плохие наборы изменений. Что вам не хватает?
- person Idan K; 13.10.2011
Вывод не говорит, что есть что. (Ищем слово хороший в отзыве о хорошем.)
- person Joshua Goldberg; 13.10.2011
Да, это пока недоступно. Это будет в 2.0 IIRC, так что не забудьте проверить в ноябре. На данный момент два отдельных вызова - это путь.
- person Idan K; 14.10.2011
Просто подтверждаю, что в текущей версии mercurial теперь вы можете добавить следующее в шаблон журнала, чтобы получить информацию, которую я искал: {bisect|shortbisect}. Спасибо! (На случай, если кто-то читает это не в курсе, это был промежуточный период, когда это работало, но работало очень медленно.)
- person Joshua Goldberg; 08.10.2012
Я добавил еще один ответ со сценарием bash для форматирования отчета с использованием информации из предиката bisected().
- person Joshua Goldberg; 14.02.2013
@icabod Мне нравится это, от моего коллеги:
hg log -r "bisect(good) or bisect(bad)" --template "{node|short} {bisect}\n"
это дает вам только хэш и хорошее/плохое
- person adambox; 06.05.2014
Как было предложено в комментарии @adambox, это должно работать:
hg log -r "bisect(good) or bisect(bad)" --template "{rev}:{node|short} {bisect}\n"
person
Kafu
schedule
30.09.2015
Можете ли вы объяснить, почему и как это отличается/лучше, чем принятый ответ?
- person Dipen Shah; 30.09.2015
Как отрендерить и увидеть их смешанные вместе скрыто в комментариях (@adambox), поэтому я думаю, что это стоит того. Это делает то, что делает мой ответ, и гораздо проще теперь, когда {bisect} доступен в качестве формата. Я бы просто добавил или . чтобы увидеть текущую скорость, которая может быть еще не отмечена.
- person Joshua Goldberg; 01.10.2015
Принятый в настоящее время ответ указывает только на документацию. Как сказал Джошуа, реальный ответ на его вопрос (есть ли способ получить эту информацию в командной строке?) находится в комментарии к adambox.
- person Kafu; 03.10.2015
В Mercurial 3.8.2 (и, возможно, раньше) вы можете использовать это:
hg log --template bisect
person
Luke Worth
schedule
23.06.2016
Вот сценарий bash (я назвал его bisectstate
), который работает теперь, когда доступен предикат bisected()
.
(Я использовал colorex
, чтобы украсить его цветами, но вы можете удалить его, если он у вас не установлен.)
#!/bin/bash -f
style() {
echo "{rev}$1 {author|person} {date|shortdate} {desc|firstline}\n"
}
(hg log -r 'not . and bisect(good)' --template "`style -good:`" ;
hg log -r '. and bisect(range) and not (bisect(good) or bisect(bad) or bisect(skip))' --template "`style -cur:`" ;
hg log -r "not . and bisect(bad)" --template "`style -bad:`" ;
hg log -r 'not . and bisect(skip)' --template "`style -skip:`" ;
hg log -r '. and bisect(good)' --template "`style -cur=good:`" ;
hg log -r '. and bisect(bad)' --template "`style -cur=bad:`" ;
hg log -r '. and bisect(skip)' --template "`style -cur=skip:`" ;
# Include the intermediate, unmarked changes in the bisect range.
hg log -r "bisect(range) and not (. or bisect(good) or bisect(bad) or bisect(skip))" --template "`style`"
) \
| sort | colorex -r bad: -b good: -g 'cur[=:]'
Вывод выглядит следующим образом:
person
Joshua Goldberg
schedule
14.02.2013