Поиск ошибок и причин изменений в коде

Слайд 2

Команда hg bisect

Примеры ситуаций, когда полезно использовать команду hg bisect:

- Самая последняя

Команда hg bisect Примеры ситуаций, когда полезно использовать команду hg bisect: -
версия программного обеспечения имеет ошибку, и Вы помните, что ее не было несколько недель назад, но не знаете, когда она появилась.
- Вы исправили ошибку в спешке, и теперь пришло время закрыть запись об ошибке в багтрекере вашей команды. Багтрекер данных требует ID ревизии, когда вы закрываете записи, но Вы не помните, в какой ревизии исправили ошибку.

2

Слайд 3

Команда hg bisect

Команда hg bisect работает по шагам:
1. Вы запускаете Ваш бинарный тест

Команда hg bisect Команда hg bisect работает по шагам: 1. Вы запускаете
Если тест успешен, запускаем команду hg bisect --good.
Если неуспешен, запускаете команду hg bisect --bad
2. Mercurial использует вашу информацию, чтобы решить, какая ревизия для тестирования следующая
3. Он обновляет рабочий каталог до этой ревизии и процесс повторяется сначала до тех пор пока  hg bisect не идентифицирует уникальный набор изменений, который знаменует собой точку, где Ваш тест перешел из ”успешного” в “неуспешный”

Опции:
-r (--reset) сбросить bisect.
-g (--good) отметить ревизию как “хорошую”
-b (--bad) отметить ревизию как “плохую”
-s (--skip) пропустить тестовый набор изменений
-e (--extend) расширить диапазон bisect

3

Слайд 4

Команда hg bisect

hg bisect --reset
hg bisect --bad
hg bisect --good 10
Testing changeset 22:e9e43d57c12e

Команда hg bisect hg bisect --reset hg bisect --bad hg bisect --good
(24 changesets remaining, ~4 tests)
0 files updated, 0 files merged, 12 files removed, 0 files unresolved
[ваше тестирование]
hg bisect --bad
Testing changeset 16:a20d4936611f (12 changesets remaining, ~3 tests)
0 files updated, 0 files merged, 6 files removed, 0 files unresolved
[ваше тестирование]
hg bisect --good
...
hg bisect --good
The first bad revision is:
changeset: 22:e9e43d57c12e
user: Bryan O'Sullivan
date: Thu Feb 02 14:09:26 2012 +0000
summary: buggy changeset
hg bisect --reset

4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Слайд 5

Команда hg log

Допустим, Вам нужно полное описание изменений или список измененных файлов,

Команда hg log Допустим, Вам нужно полное описание изменений или список измененных
чтобы узнать, та ли это ревизия, что Вам нужна.
Команда hg log с ключом -v (--verbose) предоставляет такую возможность.

5

Пример:
$ hg log -v -r 3
changeset: 3:0272e0d5a517
user: Bryan O'Sullivan
date: Sat Aug 16 22:08:02 2008 +0200
files: Makefile
description:
Get make to generate the final binary from a .o file.

Слайд 6

Команда hg log

Или ситуация, когда вы хотите видеть и описание, и то

Команда hg log Или ситуация, когда вы хотите видеть и описание, и
как изменялось содержимое. Тогда нужен ключ –p (--patch)

6

Пример:
$ hg log -v -p -r 2
changeset: 2:fef857204a0c
user: Bryan O'Sullivan
date: Sat Aug 16 22:05:04 2008 +0200
files: hello.c
description:
Introduce a typo into hello.c.
diff -r 82e55d328c8c -r fef857204a0c hello.c
--- a/hello.c Fri Aug 26 01:21:28 2005 -0700
+++ b/hello.c Sat Aug 16 22:05:04 2008 +0200
@@ -11,6 +11,6 @@
int main(int argc, char **argv)
{
- printf("hello, world!\n");
+ printf("hello, world!\");
return 0;
}

Слайд 7

Команда hg annotate

Допустим, Вы знаете ревизию, в которой допущена ошибка. И хотите

Команда hg annotate Допустим, Вы знаете ревизию, в которой допущена ошибка. И
узнать, чей код привёл к ней (кто автор).

7

Пример:
$hg annotate -unl aFile   
jim 1519:477: a = 4  bob 1518:468: b = 5  max 1496:402: return a

Опции:
-u (--user) выводит автора
-n (--number ) выводит номер ревизии
-l (--line-number ) выводит номер строки
-d (--date) выводит дату

Имя файла: Поиск-ошибок-и-причин-изменений-в-коде.pptx
Количество просмотров: 48
Количество скачиваний: 0