Git-CMSG یک ابزار خط فرمان هوشمند برای ایجاد پیامهای کامیت ساختاریافته و استاندارد در گیت است. این ابزار به شما کمک میکند تا پیامهای کامیت خود را بر اساس الگوی Conventional Commits ایجاد کنید.
با استفاده از Git-CMSG، میتوانید پیامهای کامیت خود را به شکلی ساده، یکپارچه و قابل پیگیری بنویسید. این ابزار با پشتیبانی از زبان فارسی و انگلیسی، فرآیند نوشتن کامیتهای استاندارد را برای توسعهدهندگان فارسیزبان نیز تسهیل میکند.
- ساختار استاندارد: پیامهای کامیت بر اساس قالب Conventional Commits ایجاد میشوند
- پشتیبانی چند زبانه: پشتیبانی کامل از زبانهای فارسی و انگلیسی
- رابط کاربری تعاملی: راهنمایی گام به گام کاربر برای ایجاد پیام کامیت
- پیشنهادهای هوشمند: تحلیل فایلهای تغییر یافته و ارائه پیشنهاد برای نوع و محدوده کامیت
- قابلیت ویرایش: امکان ویرایش پیام نهایی در ویرایشگر خارجی
- لیست فایلها: افزودن خودکار لیست فایلهای تغییر یافته در متن کامیت
- پشتیبانی از شماره ایشوها: استخراج خودکار شماره ایشوها از نام شاخه
برای راحتی بیشتر، میتوانید از پکیجهای نصبی آماده استفاده کنید:
# دانلود فایل .deb از بخش Releases
sudo dpkg -i git-cmsg_0.1.0_amd64.deb# دانلود فایل .rpm از بخش Releases
sudo rpm -i git-cmsg-0.1.0-1.x86_64.rpmدانلود فایل .pkg از بخش Releases و نصب با دابل کلیک
ابتدا مخزن را کلون کنید:
git clone https://github.com/ArashZich/git-cmsg
cd git-cmsgنصب وابستگیها:
pip install -r requirements.txtبرای استفاده راحتتر میتوانید یک ایلیاس در شل خود تعریف کنید:
# اضافه کردن به .bashrc یا .zshrc
alias git-cmsg="python3 /path/to/git-cmsg/git_cmsg.py"-
ابتدا تغییرات خود را با
git addبه Staging Area اضافه کنید:git add . -
سپس ابزار را اجرا کنید:
git-cmsg
-
مراحل زیر را دنبال کنید:
- انتخاب زبان (فارسی یا انگلیسی)
- انتخاب نوع تغییر (feat، fix، docs و...)
- نوشتن خلاصه کامیت
- تعیین محدوده (scope) تغییرات (اختیاری)
- افزودن توضیحات کامل (اختیاری)
- اضافه کردن شماره ایشوهای مرتبط (اختیاری)
- تایید پیام نهایی
-
پس از تایید، پیام کامیت به گیت ارسال میشود.
$ cd my-project
$ git add .
$ git-cmsg
Choose language (en/fa): fa
زبان مورد نظر را انتخاب کنید (fa/en): fa
ادامه فرایند کامیت با زبان fa.
تغییرات آماده کامیت:
- src/components/Button.js
- src/components/Input.js
- src/styles/theme.css
------------------------------
نوع تغییر چیست؟ (Type)
پیشنهاد: style (استایل کد)
1. feat (قابلیت جدید)
2. fix (رفع اشکال)
3. chore (عمومی/نگهداری)
4. refactor (بازآرایی کد)
5. docs (مستندات)
6. style (استایل کد)
7. test (تست ها)
> 6
Type: style
خلاصه کامیت؟ (Subject)
پیشنهاد: update style formatting
راهنما: با فعل امری شروع شود، حداکثر ۵۰-۷۲ حرف.
> بروزرسانی استایل دکمه ها و ورودی ها
Type: style
Subject: بروزرسانی استایل دکمه ها و ورودی ها
محدوده تغییر چیست؟ (Scope - اختیاری)
پیشنهاد: components
محدوده: بخشی از کد که تغییر کرده (مثال: 'ورود'، 'رابط کاربری')
پیشنهادات: components, src, src/components
(برای رد شدن، خالی بگذارید و Enter بزنید)
> components
Type: style
Subject: بروزرسانی استایل دکمه ها و ورودی ها
Scope: components
توضیحات کامل؟ (Body - اختیاری)
راهنما: چرایی تغییر، جزئیات مهم فنی، تفاوت با رفتار قبلی.
(برای پایان، Alt+Enter یا Esc سپس Enter بزنید)
> تغییر استایل دکمهها و ورودیها برای مطابقت بهتر با طراحی جدید.
> اضافه کردن border-radius به همه المانها و تغییر پالت رنگی.
Type: style
Subject: بروزرسانی استایل دکمه ها و ورودی ها
Scope: components
Body: (skipped)
Issues مرتبط؟ (اختیاری)
برای لینک به تیکتها از فرمتهایی مانند 'Closes #123' استفاده کنید
پیشنهادات: #42
(برای رد شدن، خالی بگذارید و Enter بزنید)
راهنما: مثال: Closes #123, Fixes #456
> Closes #42
پیشنمایش کامیت مسیج:
------------------------------
style(components): بروزرسانی استایل دکمه ها و ورودی ها
تغییر استایل دکمهها و ورودیها برای مطابقت بهتر با طراحی جدید.
اضافه کردن border-radius به همه المانها و تغییر پالت رنگی.
فایلهای تغییر یافته:
- src/components/Button.js
- src/components/Input.js
- src/styles/theme.css
Closes #42
------------------------------
تایید میکنید؟ (y=بله, n=خیر, e=ویرایش دستی): y
کامیت با موفقیت انجام شد!
ساختار کامیتهای تولید شده به شکل زیر است:
type(scope): subject
body
Footer / Issues
- Type: نوع تغییر (مانند feat، fix، docs و...)
- Scope: محدوده تغییر (بخشی از کد که تغییر کرده است)
- Subject: خلاصه کوتاه از تغییرات
- Body: توضیحات کامل و دلیل تغییرات
- Footer: اطلاعات تکمیلی (مانند شماره ایشوها، Breaking Changes و...)
نمونهای از خروجی این ابزار:
feat(auth): implement user login functionality
This commit adds the user authentication system with JWT tokens.
It includes form validation and secure password hashing.
Files changed:
- src/auth/login.js
- src/auth/validate.js
- src/components/LoginForm.js
Closes #123, Ref #456
git_cmsg.py: فایل اصلی برنامهgit_utils.py: توابع کار با گیتui.py: رابط کاربری و تعامل با کاربرmessages.py: پیامهای قابل ترجمه برنامهmessage_formatter.py: قالببندی پیام کامیت نهاییchange_analyzer.py: تحلیل تغییرات و ارائه پیشنهادات هوشمند
مشارکتها را با کمال میل میپذیریم! برای مشارکت:
- یک فورک از پروژه ایجاد کنید
- یک برنچ برای ویژگی جدید ایجاد کنید (
git checkout -b feature/amazing-feature) - تغییرات خود را کامیت کنید (با استفاده از همین ابزار!)
- برنچ خود را به مخزن اصلی پوش کنید (
git push origin feature/amazing-feature) - یک درخواست Pull Request ایجاد کنید
- پشتیبانی از زبانهای بیشتر
- پیشنهادات هوشمندتر بر اساس یادگیری از الگوهای کامیت قبلی
- افزودن پلاگین برای ادغام با ویرایشگرهای کد
- پشتیبانی از قلابهای (hooks) گیت
- افزودن تستهای خودکار
این پروژه تحت مجوز GNU General Public License v3.0 منتشر شده است. برای اطلاعات بیشتر فایل LICENSE را مطالعه کنید.