.git-blame-ignore-revs هي إحدى ميزات Git المقدمة في الإصدار 2.23 والتي تسمح لك بتجاهل التزامات محددة في نتائج إلقاء اللوم على git. يعد هذا مفيدًا بشكل خاص لعمليات التنفيذ المجمعة التي تغير عددًا كبيرًا من الأسطر دون تغيير الوظيفة الفعلية للتعليمات البرمجية، مثل تغييرات التنسيق أو إعادة التسمية أو تطبيق معايير الترميز عبر قاعدة التعليمات البرمجية. من خلال تجاهل هذه التغييرات غير الوظيفية، يمكن لـ git إلقاء اللوم على التعديلات ذات المعنى التي تشرح السياق والسبب الكامن وراء الكود.
عند استخدام git إلقاء اللوم على ملف ما، فإنه يوضح لك الالتزام الذي تم تغييره مؤخرًا في كل سطر من الملف، بالإضافة إلى المؤلف والطابع الزمني. يعد هذا مفيدًا لتتبع سبب تغيير سطر معين. ومع ذلك، إذا كان الالتزام الكبير الذي يُجري تغييرات تنسيقية بحتة، مثل تطبيق أجمل، جزءًا من السجل، فقد يشير لوم git إلى هذا الالتزام للعديد من الأسطر. وهذا يجعل من الصعب العثور على سجل التغيير الوظيفي الفعلي.
على سبيل المثال، إذا كان فريقك يستخدم أداة مثل Prettier أو ESLint لإعادة تنسيق قاعدة التعليمات البرمجية بأكملها، فقد يصل الالتزام الناتج إلى آلاف أسطر التعليمات البرمجية. بدون .git-blame-ignore-revs، سيُظهر git Blame هذا الالتزام باعتباره مسؤولاً عن كل سطر متأثر، مما قد يحجب التاريخ الأكثر أهمية وراء كل سطر.
باستخدام .git-blame-ignore-revs، يمكنك إخبار gitlem بتخطي هذه الالتزامات والتركيز على التغييرات المهمة.
لفهم كيفية استخدام هذه الميزة، دعنا نستعرض مثالاً من مستودع React.
يتضمن كود مصدر React التزامات مجمعة حيث تم تشغيل أدوات مثل Prettier عبر المشروع بأكمله. فيما يلي اثنين من هذه الالتزامات:
2. الالتزام: fd2b3e1
الرسالة: المترجم: Unfork config
يحتوي هذا الالتزام على تحديثات إضافية لتكوين Prettier، مما يؤثر على جميع ملفات .ts و.tsx الموجودة في المستودع.
تتعامل هذه الالتزامات فقط مع التنسيق ولا توفر سياقًا مفيدًا عند التحقيق في سبب كتابة سطر من التعليمات البرمجية بالطريقة التي كانت عليها.
لجعل git يتجاهل التزامات التنسيق المجمعة هذه، يمكننا إنشاء ملف .git-blame-ignore-revs في جذر المستودع.
touch .git-blame-ignore-revs
2. أضف تجزئات الالتزام ذات الصلة إلى الملف، موضحًا سبب تجاهل كل التزام. في هذه الحالة، سنضيف الالتزامين اللذين حددناهما سابقًا:
# Prettier formatting changes c998bb1ed4b3285398c9c7797135d3f060243c6a fd2b3e13d330a4559f5aa21462e1cb2cbbcf144b
3. احفظ ملف .git-blame-ignore-revs في المستودع. يمكن إصدار هذا الملف جنبًا إلى جنب مع الكود الخاص بك، مما يسمح للفريق بأكمله باستخدام نفس قائمة الالتزامات المتجاهلة.
لتجنب كتابة خيار --ignore-revs-file في كل مرة تستخدم فيها gitlem، يمكنك تكوين Git لاستخدام ملف .git-blame-ignore-revs تلقائيًا.
git config blame.ignoreRevsFile .git-blame-ignore-revs
يضمن ذلك أنه في كل مرة يقوم شخص ما بتشغيل git flesh في هذا المستودع، سيتجاهل Git تلقائيًا الالتزامات المدرجة في .git-blame-ignore-revs.
دعونا نرى كيف يعمل هذا عمليا. بدون تجاهل عمليات التنسيق المجمعة، قد يظهر لوم git:
$ git blame src/someFile.tsx c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 1) import React from 'react'; fd2b3e13 (Alan 2023-04-01 14:15:30 0200 2) function App() { c998bb1e (Joe Bloggs 2023-03-15 10:00:00 0200 3) returnHello, world!; fd2b3e13 (Ben 2023-04-01 14:15:30 0200 4) }
يشير هذا الإخراج إلى أن التغيير الأخير في السطرين 1 و3 كان بسبب التزام التنسيق Prettier (c998bb1e)، وتم تعديل السطرين 2 و4 في التزام مجمع آخر (fd2b3e13). نظرًا لأن هذه تغييرات في التنسيق، فهذا ليس مفيدًا لفهم من قدم المنطق الفعلي وراء هذه السطور.
بعد تكوين .git-blame-ignore-revs، سيؤدي تشغيل git Blame إلى تخطي الالتزامات المجمعة وإظهار السجل الحقيقي:
$ git blame src/someFile.tsx a23d9b34 (May 2022-12-01 09:30:00 0200 1) import React from 'react'; b12e45a6 (JJ 2022-12-05 11:45:15 0200 2) function App() { a23d9b34 (Joe 2022-12-01 09:30:00 0200 3) returnHello, world!; b12e45a6 (Ram 2022-12-05 11:45:15 0200 4) }
الآن، ينسب اللوم git الأسطر إلى الالتزامات الصحيحة، متجاهلاً تغييرات التنسيق غير المهمة. وهذا يمنحنا معلومات مفيدة، توضح من قام بالتغييرات الوظيفية الفعلية.
تعد ميزة .git-blame-ignore-revs في Git 2.23 بمثابة تغيير جذري للمشاريع ذات التنسيق المجمع أو تغييرات النمط. من خلال إعداد ملف .git-blame-ignore-revs وتكوين المستودع الخاص بك، يمكنك تطبيق معايير الترميز، أو تشغيل أدوات مثل Prettier، أو تعليمات برمجية لإعادة البناء دون القلق بشأن تلويث سجل اللوم.
باستخدام هذا النهج، يمكن لفريقك تحسين جودة التعليمات البرمجية وتنسيقها بثقة دون التضحية بالقدرة على تتبع التغييرات ذات المغزى، مما يضمن بقاء إلقاء اللوم على git أداة قيمة لفهم التاريخ والمنطق وراء كل سطر من التعليمات البرمجية.
في Think Throo، نحن في مهمة لتعليم المفاهيم المعمارية لقاعدة التعليمات البرمجية المتقدمة المستخدمة في المشاريع مفتوحة المصدر.
ضاعف مهاراتك في البرمجة من خلال ممارسة المفاهيم المعمارية المتقدمة في Next.js/React، وتعلم أفضل الممارسات وبناء مشاريع على مستوى الإنتاج.
نحن مفتوح المصدر - https://github.com/thinkthroo/thinkthroo (لا تعطينا نجمة!)
قم بتعزيز مهارات فريقك من خلال دوراتنا المتقدمة المبنية على بنية قاعدة التعليمات البرمجية. تواصل معنا على [email protected] لمعرفة المزيد!
https://github.com/facebook/react/blob/main/.git-blame-ignore-revs
https://Gist.github.com/kateinoigakukun/b0bc920e587851bfffa98b9e279175f2
https://github.com/facebook/react/commit/c998bb1ed4b3285398c9c7797135d3f060243c6a
https://moxio.com/blog/ignoring-bulk-change-commits-with-git-blame/
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3