GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing git-scm.com — Git - git-bisect Documentation
українська мова ▾
Topics ▾
Setup and ConfigGetting and Creating ProjectsBasic SnapshottingBranching and MergingSharing and Updating ProjectsInspection and ComparisonPatchingDebuggingExternal SystemsServer AdminGuides
AdministrationPlumbing Commands
СИНОПСИСgit bisect start [--term-(bad|new)=<term-new> --term-(good|old)=<term-old>] [--no-checkout] [--first-parent] [<bad> [<good>…]] [--] [<pathspec>…] git bisect (bad|new|<term-new>) [<rev>] git bisect (good|old|<term-old>) [<rev>…] git bisect terms [--term-(good|old) | --term-(bad|new)] git bisect skip [(<rev>|<range>)…] git bisect next git bisect reset [<commit>] git bisect (visualize|view) git bisect replay <logfile> git bisect log git bisect run <cmd> [<arg>…] git bisect help ОПИСЦя команда використовує алгоритм бінарного пошуку, щоб визначити, який саме коміт в історії вашого проєкту спричинив появу помилки. Щоб скористатися нею, спочатку потрібно вказати «поганий» коміт, який, як відомо, містить помилку, та «хороший» коміт, який, як відомо, був зроблений до появи помилки. Потім Фактично, Основні команди бісекції: start, bad, goodНаприклад, припустимо, що ви намагаєтеся знайти коміт, який зламав функцію, яка, як відомо, працювала у версії $ git bisect start $ git bisect bad # Поточна версія — погана $ git bisect good v2.6.13-rc2 # v2.6.13-rc2 є відомою гарною версією Після того, як ви вказали хоча б один поганий та один хороший коміт, Розділення: після цього залишилося протестувати 675 змін (приблизно 10 кроків) Тепер вам слід скомпілювати отриману версію та протестувати її. Якщо ця версія працює правильно, зробіть $ git bisect good Якщо ця версія пошкоджена, зробіть $ git bisect bad Тоді Розділення: після цього залишилося протестувати 337 версій (приблизно 9 кроків) Продовжуйте повторювати процес: скомпілюйте дерево, протестуйте його та, залежно від того, чи воно хороше, чи погане, виконайте Зрештою, ревізій, які потрібно перевірити, не залишиться, і команда виведе опис першого некоректного коміту. Посилання Скидання бісекціїПісля сеансу бісекції, щоб очистити стан бісекції та повернутися до початкового HEAD, виконайте таку команду: $ git bisect reset Зазвичай, це поверне ваше дерево до коміту, який було отримано перед За допомогою необовʼязкового аргументу ви можете повернутися до іншого коміту: $ git bisect reset <commit> Наприклад, Альтернативні терміниІноді вам потрібно знайти не той коміт, який спричинив збій, а той, що призвів до переходу від якогось «старого» стану до «нового». Наприклад, ви можете шукати коміт, у якому було впроваджено певне виправлення. Або ж ви шукаєте перший коміт, у якому імена файлів вихідного коду нарешті були приведені у відповідність до стандартів іменування вашої компанії. Чи будь-що інше. У таких випадках використання термінів «хороший» і «поганий» для позначення «стану до зміни» та «стану після зміни» може викликати значну плутанину. Тому замість «хороший» і «поганий» можна використовувати терміни «старий» і «новий» відповідно. (Але зверніть увагу, що в одній сесії не можна змішувати «хороший» і «поганий» з «старим» і «новим».) У цьому більш загальному випадку ви надаєте Щоб використовувати "old" та "new" замість "good" та "bad", потрібно виконати git bisect old [<rev>] щоб вказати, що коміт було здійснено до бажаної зміни, або git bisect new [<rev>...] щоб вказати, що це було після. Щоб отримати нагадування про терміни, що використовуються на даний момент, скористайтеся git bisect terms Ви можете отримати лише старий термін за допомогою команд Якщо ви хочете використовувати власні терміни замість "поганий"/"добрий" або "новий"/"старий", ви можете вибрати будь-які назви (окрім наявних субкоманд бісекції, таких як git bisect start --term-old <term-old> --term-new <term-new> Наприклад, якщо ви шукаєте коміт, який запровадив регресію продуктивності, ви можете використовувати git bisect start --term-old fast --term-new slow Або якщо ви шукаєте коміт, який виправив помилку, ви можете використовувати git bisect start --term-new fixed --term-old broken Потім використовуйте Візуалізація/перегляд бісекціїЩоб переглянути підозрювані елементи, що залишилися в «gitk», під час процесу бісекції виконайте таку команду (як альтернативу команді $ git bisect visualize Git визначає наявність графічного середовища за допомогою різних змінних середовища: Якщо жодна з цих змінних середовища не встановлена, замість неї використовується git log. Ви також можете задати параметри командного рядка, такі як $ git bisect visualize --stat Журнал та відтворення бісекціїПісля позначення редакцій як хороших або поганих, виконайте таку команду, щоб показати, що було зроблено на даний момент: $ git bisect log Якщо ви виявите, що помилилися, вказавши статус редакції, ви можете зберегти вивід цієї команди у файлі, відредагувати його, щоб видалити неправильні записи, а потім виконати такі команди, щоб повернутися до виправленого стану: $ git bisect reset $ git bisect replay that-file Уникнення тестування комітуЯкщо посеред сеансу бісекції ви знаєте, що запропонована ревізія не є гарною для тестування (наприклад, вона не збирається, і ви знаєте, що збій не має нічого спільного з помилкою, яку ви шукаєте), ви можете вручну вибрати сусідній коміт і протестувати його. Наприклад: $ git bisect good/bad # попередній раунд був хорошим чи поганим. Розділення: після цього залишилося протестувати 337 редакцій (приблизно 9 кроків) $ git bisect visualize # ой, це нецікаво. $ git reset --hard HEAD~3 # спробуйте 3 ревізії перед тим # що було запропоновано Потім скомпілюйте та протестуйте вибрану ревізію, а потім позначте її як хорошу або погану звичайним способом. Bisect skipЗамість того, щоб самостійно вибирати найближчий коміт, ви можете попросити Git зробити це за вас, виконавши команду: $ git bisect skip # Поточну версію неможливо протестувати Однак, якщо ви пропустите коміт поруч із тим, який ви шукаєте, Git не зможе точно визначити, який із цих комітів був першим поганим. Ви також можете пропустити діапазон комітів, замість одного, використовуючи нотацію діапазону. Наприклад: $ git bisect skip v2.5..v2.6 Це повідомляє процесу bisect, що жодні коміти після Зверніть увагу, що якщо ви також хочете пропустити перший коміт діапазону, вам слід виконати команду: $ git bisect skip v2.5 v2.5..v2.6 Це повідомляє процесу bisect, що коміти між версіями Розділити даліЗазвичай, після позначення ревізії як хорошої чи поганої, Git автоматично обчислює та перевіряє наступну ревізію для тестування. Однак, якщо вам потрібно явно запросити наступний крок бісекції, ви можете використовувати: $ git bisect next Ви можете використовувати це для відновлення процесу бісекції після його переривання шляхом перевірки іншої редакції. Зменшення бісекції шляхом надання більшої кількості параметрів для початку бісекціїВи можете ще більше скоротити кількість спроб, якщо знаєте, яка частина дерева повʼязана з проблемою, яку ви відстежуєте, вказавши параметри pathspec під час виконання команди $ git bisect start -- arch/i386 include/asm-i386 Якщо вам заздалегідь відомо більше одного хорошого коміту, ви можете звузити простір для пошуку, вказавши всі хороші коміти одразу після поганого коміту під час виконання команди $ git bisect start v2.6.20-rc6 v2.6.20-rc4 v2.6.20-rc1 --
# v2.6.20-rc6 is bad
# v2.6.20-rc4 and v2.6.20-rc1 are good
Bisect runЯкщо у вас є скрипт, який може визначити, чи поточний вихідний код хороший чи поганий, ви можете виконати біснкцію, виконавши команду: $ git bisect run my_script arguments Зверніть увагу, що скрипт ( Будь-який інший код виходу перерве бісекцію. Слід зазначити, що програма, яка завершується через Спеціальний код виходу 125 слід використовувати, коли поточний вихідний код неможливо перевірити. Якщо скрипт завершується з цим кодом, поточну ревізію буде пропущено (див. Часто ви можете зіткнутися з ситуацією, коли під час сеансу бісекції вам потрібно внести тимчасові зміни (наприклад, s/#define DEBUG 0/#define DEBUG 1/ у файл header або «версія, яка не має цього коміту, потребує цієї латки, щоб вирішити іншу проблему, яка не цікавить цю бісекцію»), застосовані до тестованої версії. Щоб впоратися з такою ситуацією, після того, як внутрішній git bisect знайде наступну ревізію для тестування, скрипт може застосувати латку перед компіляцією, запустити справжній тест, а потім вирішити, чи пройшла ревізія (можливо, з потрібною латкою) тест, а потім перемотати дерево до початкового стану. Нарешті, скрипт повинен завершитися зі статусом справжнього тесту, щоб цикл команди ОПЦІЇ
ПРИКЛАДИ
GITЧастина набору git[1] |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |