Git وGitHub / المتقدم: الثقة والحجم والتعافي / الدرس 13
التحقيق في التاريخ والتنصيف الآلي
حوّل تراجعاً قابلاً للتكرار لبحث محدود بالتاريخ مع فصل الإيداع المشتبه من السبب الكامل.
في هذه الصفحة
أهداف الدرس
- اختر حدين معلومين سليم ومعيب.
- ابنِ شرطاً حتمياً بمعاني خروج صحيحة.
عرّف تراجعاً واحداً قابلاً للإعادة
يضيق التنصيف التاريخ بتصنيف مراجعات لشرط واحد ولا يعوض اختباراً متذبذباً أو اعتماداً متغيراً أو عرضاً غامضاً. حدد سليماً سلفاً ومعيباً بظروف متقاربة واحفظ العمل وابحث بنسخة مؤقتة. سجل الأدوات والبيانات والبيئة. قد يكشف أول إيداع فاشل عيباً كامناً، فهو بداية قوية لا إثبات مسؤولية شخص أو سطر وحده.
اجعل المصنف صريحاً
يفسر bisect run الصفر سليماً وغير الصفر المعتاد ضمن مداه معيباً ويخصص 125 للتخطي. لا تخلط غياب الأمر وفشل التنفيذ بالتراجع؛ افهم القواعد وافشل الأداة مناسباً. يفحص النص ملف حالة اصطناعياً. احفظه خارج النسخة كي لا تستبدله المراجعات. ميّز بناء تاريخي غير مدعوم من السلوك المعيب لا تصنف كل إعداد فاشلاً.
from pathlib import Path
import sys
path = Path("state.txt")
if not path.exists():
sys.exit(125)
sys.exit(0 if path.read_text(encoding="utf-8").strip() == "good" else 1)
احفظه بالأب المؤقت باسم check-notebook.py. يخرج good بالصفر والمحتوى الآخر بـ 1 والغياب بـ 125. يقرأ محلياً فقط بلا خدمة أو تغيير تاريخ.
نفذ البحث المحدود بالمختبر
يفترض الجزء تاريخاً مؤقتاً بوسمي lab-good وlab-bad وشرطاً بالأب. يحدد start المعيب ثم السليم ويصنف run حتى الانتقال أو غموض التخطي. احفظ السجل قبل الإعادة. يعتمد الاختيار والخطوات على الرسم ولا نخترع بصمة. قد يترك التخطي الواسع مشتبهين عدة فيبقى عدم اليقين صريحاً.
git bisect start lab-bad lab-good
git bisect run python ../check-notebook.py
git bisect log
git bisect reset
يتطلب الوسمين والنظافة والشرط الحتمي. ينهي reset هنا التنصيف ويعيد حالته وليس git reset --hard. لا يطال فرع المشروع أو بعيداً أو خدمة.
أعد فحص الانتقال وافتراضاته
بعد البحث اختبر المشتبه وسلفاً مناسباً بالبيئة نفسها وافحص الرقعة والاعتماد والإعداد وسياق الدمج. قد يحتاج التراجع تفاعل تغييرات أو اعتماداً خارج المستودع. ابنِ اختبار ارتداد وتحقق من الإصلاح بالفرع المدعوم. لا تعدل الماضي ليبني دون تسجيل التكييف. احفظ التصنيف والتخطي وحدود البيئة بالتحقيق.
اجمع التنصيف بالقراءة الدقيقة
استخدم بحث المحتوى وblame وshow والنطاق لفهم الانتقال مع حدود التبسيط والنقل والدمج. يوضح الأب الأول التكامل والتفصيل المساهمة. اجعل النسبة بناءة؛ لا يسجل التاريخ كل نقاش أو ظرف. يذكر الاستنتاج العرض والحدود والانتقال والسبب والتحقق والقيود، لا بصمة بلا تفسير.
الأخطاء الشائعة وإصلاحها
يعيد التنصيف مشتبهين غير متسقين
- لماذا يحدث؟
- الشرط أو البيئة غير حتميين.
- كيف تصلحه؟
- ثبت المدخلات وأعد الحدود.
- كيف تتجنب تكراره؟
- تحقق من الشرط قبل البحث.
تُوسم إخفاقات البناء القديمة سلوكاً معيباً
- لماذا يحدث؟
- تشارك أخطاء الإعداد مسار الفشل.
- كيف تصلحه؟
- ميّز غير المدعوم وتخطَّ بتبرير.
- كيف تتجنب تكراره؟
- وثق متطلبات التشغيل التاريخي.
يعتبر إيداع محدد السبب كله
- لماذا يحدث؟
- اختلط كشف الانتقال بالتفسير السببي.
- كيف تصلحه؟
- أعد الفحص وافحص التفاعلات.
- كيف تتجنب تكراره؟
- اشترط اختبار ارتداد وإصلاحاً متحققاً.
اختبر فهمك
1. ماذا يفعل الشرط عند غياب الملف بمراجعة قديمة؟
اعرض الحل المشروح
اتبع تعريف التجربة. إذا تعذر تقييم السلوك فالتخطي المبرر مناسب، وإذا كان الغياب التراجع فصنفه. لا تساوِ غياب الإعداد بالفشل تلقائياً.
2. يحدد التنصيف إيداع دمج. كيف تتابع؟
اعرض الحل المشروح
افحص تاريخ الأبوين والنتيجة والحلول والافتراضات وأعد السلوك وحدد الطرف أو التفاعل مع حفظ الدليل.
أهم ما تعلمته
- الشرط الحتمي أساس التنصيف الموثوق.
- يبقى التخطي وحد البيئة عدم يقين.
- يبدأ أول معيب تحليل السبب.