BranchGPT: راه حل مبتنی بر هوش مصنوعی برای نامهای شاخههای شخصیشده

💡 TL;DR: بله، BranchGPT تلاشی برای برتری بر هوش مصنوعی است. با این حال، در حالی که کاربرد آن مشکوک است، مانند یک بازی لذت بخش است. اگر این برای شما نیست: به اندازه کافی منصفانه. شما مجبور نیستید از آن استفاده کنید.
“فقط دو چیز سخت در علوم کامپیوتر وجود دارد: نامعتبر کردن حافظه پنهان، نامگذاری چیزها و خطاهای off-by-1”. هر کسی که در ابتدا این نقل قول را ابداع کرد، به خصوص جامع نبود، اما بدون شک حقیقت را می گوید. باورنکردنی است که چگونه کارهای به ظاهر آسان سخت ترین کارها می شوند.
آزمایش با API OpenAI ما را به آزمایش نامگذاری شعب سوق داد. فضای نام شعبه یک مخزن جهانی است، بنابراین دادن یک نام توصیفی به شاخه git از این قاعده مستثنی نیست. ردیابهای مشکل اغلب میانبرهایی برای تولید نام شعب از عناوین JIRA یا GitHub ارائه میکنند، اما با موفقیت مشکوک. نتایج شاید از نظر یکنواختی قابل توجه باشد، اما اغلب نامهای طنزآمیز طولانی را ایجاد میکنند که خطوط متعددی را میپیچد.
پرش مستقیم با:
$ runme branchGPT
(نصب از طریق Homebrew یا Scoop)
پس اسم شعبه خوب و با کیفیت چیست؟ آیا از آنجایی که فرادادههای متنی بیشتری به درخواستهای کششی وارد میشوند، اهمیتی دارند؟ در ذهن من، این یک سوال ذهنی وحشیانه است. در اینجا برخی از قراردادهایی که توسعه دهندگان استفاده می کنند آورده شده است:
پیشوند پرکار 🤓
پیشوندها در طعم های مختلف وجود دارند. شرح نوع کار از آنچه در یک شاخه یا پیشوند نام مستعار برای کاهش ابهام قرار می گیرد. با استفاده از اسلش رو به جلو /
به عنوان یک جداکننده یک کنوانسیون ایجاد شده است. چند نمونه: admc/graph-colors
، seb/exp-prophet
، feat/replace-tink-with-cryptography
، chore/upgrade-deps-for-next-lts
، chore/eslint
، hotfix/631-prod
. استفاده از چند پیشوند، به عنوان مثال، seb/experiment/prophet
، بی سابقه نیست.
ترسر خستگی ناپذیر 💂♀️
در حالت ایده آل، فقط یک کلمه، اما نه بیشتر از دو. نمونه ها عبارتند از: fastapi
، ingress
، sharing
، rollups
، score-break
، gtag-fix
، vanilla
، demo
. نکته را متوجه شدید. آن را کوتاه و صریح نگه دارید. احتمالاً این کنوانسیون در یک مخزن تک بزرگ و بدون بازیافت نام شعبه چندین بار مقیاس نخواهد شد.
مرجع بی رحم 🥷
Dependabot عاشق انجام این کار است. به همان اندازه اطلاعات ارجاعی مانند شناسه شماره JIRA یا GitHub، عناوین کامل، شماره نسخه و غیره را در نام شعبه بچسبانید. مهم نیست چقدر حجیم. انسان ها هم این کار را می کنند. به این نگاه کن 277-update-breaks-score-contributor-to-be-consistent-with-others
، ENG-422-open-vsx-stable-release
، CORE-13128-retry-screen-for-password-recovery-flow-loops-endlessly
. در حالی که موارد کوتاهتر رایجتر هستند، مردم از ایجاد نامهای شاخهای که به راحتی بیش از 150 کاراکتر است تردیدی ندارند.
حتی بیشتر وجود دارد. با این حال، ضربه زننده اینجاست: وجود دارد بهترین کنوانسیون جهانی وجود ندارد به نام شعب!
شما می توانید استدلال کنید که تعادل صحیح بین حداقل توصیفی، نه خیلی کوتاه و نه خیلی طولانی، راهی است که باید طی شود. با این حال، ناگزیر به مخازن، تیم و ترجیحات شخصی شما بستگی دارد. چیزی که به طور کلی صادق است این است که بهترین نام های شاخه آنهایی هستند که احساس طبیعی و آشنا به شما.
اگر قبلاً درخواستهای کششی خود را ادغام کردهاید، ممکن است قبلاً اطلاعاتی را در گزارش git خود ثبت کرده باشید تا یک مدل هوش مصنوعی Transformer، یعنی GPT، بتواند نامهای شعبه را به شما پیشنهاد دهد. یک تعهد ادغام تقریباً عالی است (به ادامه مطلب مراجعه کنید) تا طرح بندی شاخه های شما را نشان دهد.
به همین دلیل است که ما این ادغام مفید را بین شاخه های شما و GPT3/4 OpenAI برای شما ایجاد کرده ایم. شاید صداش کن BranchGPTبدون هیچ دلیل مشخصی 😉. بله، من سعی میکنم هوش مصنوعی را بالاتر ببرم.
ایده ساده و شگفت آور موثر است. فقط یک شرح جریان آزاد از چیزی که روی آن کار می کنید وارد کنید و اجازه دهید BranchGPT با چند پیشنهاد بازگردد. اگر نمی توانید یک مثال خوب برای آزمایش فکر کنید. همیشه وجود دارد @iamdevloper در توییتر برای کمک به شما:
توییت اینجا: https://twitter.com/iamdevloper/status/1609848459489599489
این ماه می 2023 است، بنابراین فقط در مورد “آخرین تماس” برای به روز رسانی پاورقی 2022 وب سایت است! شرح آزاد را در BranchGPT رها کنید، و voilà، لیستی از پیشنهادات به شما ارائه می شود که در حالت ایده آل باید به طرز عجیبی آشنا به نظر برسند. این نسخه ی نمایشی را در زیر مشاهده کنید. $ runme branch
انجام خواهد داد اگر پیدا کنید branchGPT
خیلی طولانی
💡 اتفاقا،
runme
از شما می خواهد که با GitHub خود وارد شوید تا یک حساب ایجاد کنید (خط مشی رازداری)
هم طول و هم
seb/<description-goes-here>
با استفاده از چیدمان معمولی من احساس آشنایی کنید.
اضافه کردن مقداری لهستانی
فرض کنید پیشنهادات کاملاً آماده نیستند. جابجایی پیشوند در UI ترمینال branchGPT ساده است، فقط ضربه بزنید t
برای تغییر دادن پیشوندها به طور مشابه، e
کلید ورودی انتخاب شده را به حالت ویرایش منتقل می کند تا آخرین لمس ها را روی آن قرار دهید.
تغییر پیشوندها با
t
و ورودی انتخاب شده را باe
.
چگونه کار می کند
در زیر سرپوش، BranchGPT تعهدات ادغام مخزن زمینه را پردازش می کند. شروع با ادغام شخصی کاربران git پیکربندی شده. اگر هیچ کدام وجود نداشته باشد، قبل از استفاده از یک لیست ثابت، به تمام تعهدات ادغام موجود در مخزن باز می گردد. دومی پیشنهاداتی را ارائه می دهد که کمترین احساس شخصی بودن را دارند.
چرا Merge Commits؟ نمونه فهرست زیر را بررسی کنید. متوجه خواهید شد که چگونه پیام های commit نام شاخه ها (با پیشوند GitHub org) را در کنار توضیحات متنی رمزگذاری می کنند. تقریباً برای کاشت دادهها برای یک درخواست GPT که توسط OpenAI پشتیبانی میشود، عالی است curie
موتور Curie
یک مبادله عادلانه بین قابلیت ها و هزینه فراهم می کند.
لیست معمولا طولانی تر است. با این حال، برای اختصار کوتاه شده است
خارج از احراز هویت، محدود کردن نرخ پایه، پردازش پیش و پس از آن، و بررسی تمام کادرهای پیاده سازی در دستورالعمل های API OpenAI، تمام است. ما امیدواریم که شما آن را دوست داشته باشید.
فهرست آرزوها
BranchGPT از آزمایش بیرون آمد و من آن را نرم افزار آلفا در نظر می گرفتم. چند مورد که ای کاش می توانستیم در این نسخه اضافه کنیم اما زمان محدود است:
- حلقه بازخورد را در ویرایش پیشنهادات ببندید. ما تصمیم گرفتیم آن را ساده نگه داریم و همه داده ها را زودگذر در نظر بگیریم.
- یک مدل دقیق برای پیشنهادات شاخه عمومی که فاقد لیستی از تعهدات ادغام شخصی/repo هستند.
- مدلهایی را که نام شاخهها را از تفاوتهای کد استخراج میکنند، استفاده کنید. خیلی معمول است که پس از کدنویسی و زمانی که آماده ایجاد PR هستید، یک نام شعبه به دست آورید—به این معنی بود که به https://carper.ai/diff-models-a-new-way-to-edit-code/ و نگاه کنید. مدل های دیگر
- مشکل GitHub را انتخاب کنید تا از لیستی از مسائلی که به شما اختصاص داده شده است در اعلان کپی شود.
- ادغام UX در برنامه افزودنی کد VS Runme. اگر این چیزی است که می خواهید به ما اطلاع دهید.
- با یک UX شبیه به چت آزمایش کنید. ما این آزمایش را قبل از انتشار APIهای chatGPT ساخته بودیم.
اکنون، پیش بروید و BranchGPT را برای چرخش انتخاب کنید. لطفا شهروند خوبی باشید APIها تحت حساب OpenAI ما (شامل پرداخت صورت حساب) در حال اجرا هستند و ما قصد داریم با بهترین تلاش خود BranchGPT را در دسترس جامعه قرار دهیم. متشکرم!
$ scoop bucket add stateful https://github.com/stateful/scoop-bucket.git # on Windows
$ scoop install stateful/runme; runme branchGPT
# or
$ brew install stateful/tap/runme && runme branchGPT # on macOS (homebrew)
دستورالعمل نصب کامل در اینجا. توجه داشته باشید که
runme branch
وrunme branchGPT
همان هستند.
در هنگام نوشتن این پست، یک سوال که ای کاش رنگ بیشتری داشتم: آیا Merge Commits تکرار بدی دارد؟ بسیاری از افرادی که من از آنها خواسته ام به ترتیب طبقه بندی شده اند Squash & Merge™️
یا Rebase & Merge™️
اردوگاه ها چه کسی دیگری از Merge Commits قدردانی می کند؟ فقط من؟ در Discord به ما بگویید یا در مورد یک درخواست ویژگی بپرسید. برای محتوای بیشتر مانند این، لطفاً در بهروزرسانیهای ایمیل ما مشترک شوید.
امیدواریم BranchGPT باعث شود که Merge Commits را بیشتر دوست داشته باشید 😆.