A.3. Как провести проверку на деградацию, используя Subversion

Иногда возникает проблема 'раньше это работало, а теперь - нет'. Здесь представлена пошаговая процедура определения момента возникновения ошибки. Но она не для рядовых пользователей.

Во-первых, Вам нужно получить исходный код MPlayer из Subversion. Инструкции могут быть найдены в разделе Subversion страницы закачки.

После этого в каталоге mplayer/ Вы будете иметь образ дерева Subversion. Теперь обновите этот образ на желаемую дату:

cd mplayer/
svn update -r {"2004-08-23"}

Формат даты: YYYY-MM-DD HH:MM:SS. Использование этого формата, гарантирует, что Вы сможете извлечь патчи по дате их внесения, которые указаны в архиве MPlayer-cvslog.

Далее выполняйте как при обычном обновлении:

./configure
make

Для непрограммистов, читающих эту страницу, сообщим, то самый быстрый способ найти место возникновения ошибки — использование бинарного поиска, т.е. поиск даты, деля интервал поиска пополам раз за разом. Например, если проблема возникла в 2003 году, начните с середины года и выясните присутствует ли проблема. Если да, то переходите к проверке начала Апреля, иначе — к началу Октября. Повторяйте этот процесс, уменьшая интервал поиска вдвое, пока не выясните искомую дату.

Если у Вас имеется достаточно свободного места на жестком диске (полная компиляция требует около 100Мб, или 300-350 если включена отладочная информация), скопируйте последнюю работающую версию перед обновлением, это сэкономит время при необходимости вернуться назад. (Как правило необходимо выполнять 'make distclean' до перекомпиляции более ранней версии, поэтому при отсутствии сохраненной копии Вам придется перекомпилировать весь проект.) Также Вы можете использовать ccache для ускорения компиляции.

Как только Вы нашли дату, продолжайте поиск, используя архив mplayer-cvslog (отсортированный по дате) до получения более точного времени, включая час, минуту, секунду:

svn update -r {"2004-08-23 15:17:25"}

Это позволит легко выделить патч, явившийся источником проблемы.

Если Вы нашли нужный патч, то Вы практически победили; сообщите о нем в MPlayer Bugzilla или подпишитесь на MPlayer-users и отправте сообщение туда. Есть шанс, что автор исправит ошибку. Вы также можете долго и пристально вглядываться в патч, пока сами не увидите ошибку :).