كيف يمكنني التخلص من الرسائل "عن بُعد:" التي تظهر على كل سطر يتم إرجاعه بواسطة ما بعد الاستقبال في Git؟
-
02-10-2019 - |
سؤال
لقد قمت بإنشاء خطاف ما بعد الاسترداد في git. رسائل إخراج الخطاف على الشاشة ، والتي يتم إرسالها مرة أخرى إلى عميل GIT للقيام بالدفع ، وإخراجها مرة أخرى.
كيف يمكنني التخلص من النص "عن بُعد:" قبل كل سطر من الإخراج؟ إنه مشتت إلى حد ما. (أعلم أن هذا ممكن لأنني رأيته في الممارسة العملية ، لا أعرف كيف يتم ذلك.)
المحلول
ملاحظة: يمكن أن تكون البادئة مهمة لتجنب خطأ الرسائل من النظام البعيد كرسائل من النظام المحلي.
ومع ذلك ، لا توجد طريقة لإيقاف البادئة ، لكن يتم كتابتها جميعًا إلى Stderr. يمكنك إعادة توجيه/التقاط/تصفية Stderr من دفع Git لفعل ما تريد.
قد تكون هناك طريقة تقريبية للقيام بذلك:
git push ... 2>&1 | sed -e 's/^remote: //'
يرسل stdout إلى أنبوب ويجعل stderr goto في نفس المكان. في الطرف الآخر من الأنبوب ، سيد يقرأ الإخراج المشترك ويحذف أي remote:
البادئات. يجب أن يكون هذا على ما يرام لأنه من غير المحتمل أن نرى remote:
البادئات في تيار stdout. إن الجمع بين stdout و stderr مثل هذا أمر مقبول بشكل عام للاستخدام التفاعلي (لأنهم ربما كانوا يذهبون إلى نفس الجهاز tty على أي حال) ، ولكن قد لا يكون فكرة جيدة للاستخدام في السياقات الآلية (على سبيل المثال).