হ্যালোওওওও!
আপনি মহান করছেন আশা করি! এই SMY! 👋 আসুন সরাসরি 🚀 এর মধ্যে ঝাঁপ দেওয়া যাক
...
আমি প্রতিটি প্রতিশ্রুতিতে একটি উদাহরণ কমিট-মেসেজ হুক সেট আপ করেছি
↳ শাখার নাম কনভেনশন যেমন [টাইপ]/এবিসি-[টিকিট নম্বর]-[উদ্দেশ্য]
↳ কমিট-মেসেজ কনভেনশনের জন্য পরীক্ষা করে যেমন [ABC-টিকিট নম্বর] [টাইপ]: উদ্দেশ্য
↳ লিন্ট, সুন্দর এবং রান ইউনিট পরীক্ষাগুলির জন্য পরীক্ষা করে
সংক্ষিপ্ত লিঙ্ক: https://gist.github.com/smyaseen/17083d60d02a07b2a3122410e2d39b6f
.....
Wait What?
But Why?
But How?
↳ গিট হুক হল স্ক্রিপ্ট যা গিট রিপোজিটরিতে যখনই কোনো নির্দিষ্ট ঘটনা ঘটে তখন স্বয়ংক্রিয়ভাবে চলে।
↳ তারা আপনাকে গিট-এর অভ্যন্তরীণ আচরণ কাস্টমাইজ করতে দেয় এবং বিকাশের জীবন চক্রের মূল পয়েন্টগুলিতে কাস্টমাইজযোগ্য অ্যাকশন ট্রিগার করতে দেয়।
↳ স্থানীয় হুক এবং সার্ভার-সাইড হুক আছে।
↳ স্থানীয় হুকগুলি আপনার মেশিনে এবং সার্ভার-সাইড রিমোট রিপোজিটরিতে চলে।
স্থানীয় হুক:
↳ প্রি-কমিট ↳ প্রস্তুতি-কমিট-বার্তা ↳ প্রতিশ্রুতি-বার্তা ↳ পোস্ট-কমিট ↳ পোস্ট-চেকআউট ↳ প্রি-রিবেস
সার্ভার হুক:
↳ প্রাক-প্রাপ্তি ↳ আপডেট ↳ প্রাপ্তির পর
↳ উদাহরণস্বরূপ, ফাইলগুলি প্রতিশ্রুতিবদ্ধ হওয়ার আগে আপনি লিন্ট চেক চালাতে চান, তাই আমরা প্রি-কমিট হুক ব্যবহার করি।
↳ আরেকটি উদাহরণ যা আপনি মানক শাখার নাম এবং কমিট-মেসেজ কনভেনশন প্রয়োগ করতে চান, তাই আমরা কমিট-মেসেজ হুক ব্যবহার করি।
↳ এবং আরো অনেক কিছু...
↳ সহজ সেটআপের জন্য, একটি জাভাস্ক্রিপ্ট প্রকল্পে, হাস্কি নামে একটি লাইব্রেরি ইনস্টল করুন এবং ডকুমেন্টেশন অনুসরণ করুন
https://www.npmjs.com/package/husky
↳ একটি উদাহরণ হল আমি শাখার নাম প্রয়োগ করতে চাই, বার্তা সম্মেলন করতে চাই এবং লিন্ট, সুন্দর এবং পরীক্ষা চালাতে চাই।
↳ আমরা একাধিক হুক ব্যবহার করতে পারি। আমার ক্ষেত্রে, আমি একটি কমিট-বার্তা হুক যোগ করব। আমি প্রি-কমিট বেছে না নেওয়ার কারণ হল এটি কমিট-বার্তার জন্য চেক করে না কারণ এটি কমিট করার আগে চলে। আমি চাই না একজন ডেভেলপার চেক চালান এবং কমিট মেসেজে ব্যর্থ হন, ঠিক করুন এবং আবার সব চালান। আমি প্রথমে কমিট মেসেজ চেক করতে চাই।
↳ হুস্কির ডকুমেন্টেশন অনুসরণ করে একটি কমিট-মেসেজ হুক তৈরি করুন এবং নিম্নলিখিত উদাহরণটি পেস্ট করুন:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" # Checks for branch name currentBranch=$(git rev-parse --abbrev-ref HEAD) requiredPattern="^(build|chore|feat|docs|refactor|perf|test)/ABC-\d+-.+$" if ! echo "$currentBranch" | grep -qE $requiredPattern; then echo "\nInvalid branch name: $currentBranch" echo "-" echo "Should follow this pattern: build|chore|feat|docs|refactor|perf|test/ABC-ticketnumber-any-text" echo "-" echo "example: docs/ABC-123-update-readme.md" echo "-" echo "Refer to this for convention:" echo "-" echo "build : Changes related to building the code (eg adding npm dependencies or external libraries)." echo "-" echo "chore: Changes that do not affect the external user (eg updating the .gitignore file or .prettierrc file)." echo "-" echo "feat: A new feature." echo "-" echo "fix: A bug fix." echo "-" echo "docs: Documentation a related changes." echo "-" echo "refactor: A code that neither fix bug nor adds a feature." echo "-" echo "perf: A code that improves performance style: A code that is related to styling." echo "-" echo "test: Adding new test or making changes to existing test" echo "-\n" exit 1 # Branch name doesn't match the pattern, exit with error code fi # Checks for commit message commit_message="$(cat "$1")" pattern='^\[ABC-[0-9]+\] (build|chore|feat|docs|refactor|perf|test): .+$' if [[ ! $commit_message =~ $pattern ]]; then echo "\nInvalid commit message: $commit_message" echo "-" echo "Should follow this pattern: [ABC-ticketnumber] build|chore|feat|docs|refactor|perf|test: objective" echo "-" echo "example: [ABC-15] chore: updated .gitignore" echo "-" echo "Refer to this for convention:" echo "-" echo "build : Changes related to building the code (eg adding npm dependencies or external libraries)." echo "-" echo "chore: Changes that do not affect the external user (eg updating the .gitignore file or .prettierrc file)." echo "-" echo "feat: A new feature." echo "-" echo "fix: A bug fix." echo "-" echo "docs: Documentation a related changes." echo "-" echo "refactor: A code that neither fix bug nor adds a feature." echo "-" echo "perf: A code that improves performance style: A code that is related to styling." echo "-" echo "test: Adding new test or making changes to existing test" echo "-\n" exit 1 fi # npx lint-staged -- uncomment when have lint setted up # npm run test -- uncomment when have test setted up
↳ এখন, আপনি যখনই প্রতিশ্রুতি দেবেন, এটি শাখার জন্য পরীক্ষা করবে এবং লিন্ট চেক চালানোর সাথে সাথে নামকরণ কনভেনশন কমিট করবে। পরিশেষে, এটি শেষ পর্যন্ত পরীক্ষা চালাবে, বাকি সবকিছু ভালো হওয়ার পর।
✨ ধারাবাহিকতা।
✨ প্রমিতকরণ।
✨ মাইন্ড অফ দ্য ট্রাভিয়াল।
✨ স্বয়ংক্রিয় এবং প্রভাবশালী উপর ফোকাস.
আমরা শুধু একটি গিট হুক দিয়ে আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোকে উন্নত করেছি। 🚀
.....
এখন আপনি আপনার উন্নয়ন কর্মপ্রবাহকে সুপারচার্জ করতে পারেন 🚀
এটা, লোকেরা! আমি এটা আপনার জন্য একটি ভাল পড়া ছিল আশা করি. ধন্যবাদ! ✨