paint-brush
Cách tự động hóa quy trình công việc Git bằng Git Hook 🚀từ tác giả@smy
133 lượt đọc

Cách tự động hóa quy trình công việc Git bằng Git Hook 🚀

từ tác giả Syed Muhammad Yaseen4m2024/07/30
Read on Terminal Reader

dài quá đọc không nổi

Móc Git là các tập lệnh chạy tự động bất cứ khi nào một sự kiện cụ thể xảy ra trong kho Git. Chúng cho phép bạn tùy chỉnh hành vi nội bộ của Git và kích hoạt các hành động có thể tùy chỉnh tại các điểm chính trong vòng đời phát triển. Ví dụ: bạn muốn chạy kiểm tra Lint trước khi các tệp được cam kết, vì vậy chúng tôi sử dụng hook pre-commit.
featured image - Cách tự động hóa quy trình công việc Git bằng Git Hook 🚀
Syed Muhammad Yaseen HackerNoon profile picture
0-item
1-item

Xin chàooooooooo!


Mong bạn làm việc tốt! Đây là SMY! 👋 Hãy nhảy ngay vào 🚀


....

Tôi đã thiết lập một ví dụ về thông báo cam kết trên mỗi lần xác nhận


↳ kiểm tra quy ước tên chi nhánh, tức là [loại]/ABC-[số vé]-[mục tiêu]


↳ kiểm tra quy ước thông điệp cam kết tức là [ABC-ticketnumber] [type]: object


↳ kiểm tra xơ vải, đẹp hơn và chạy thử nghiệm đơn vị


Liên kết ý chính: https://Gist.github.com/smyaseen/17083d60d02a07b2a3122410e2d39b6f

.....

Nội dung:

  • Wait What?
  • But Why?
  • But How?

1️⃣ Cái gì -


↳ Git hook là các tập lệnh chạy tự động bất cứ khi nào một sự kiện cụ thể xảy ra trong kho Git.


↳ Chúng cho phép bạn tùy chỉnh hành vi nội bộ của Git và kích hoạt các hành động có thể tùy chỉnh tại các điểm quan trọng trong vòng đời phát triển.


↳ Có hook cục bộ và hook phía máy chủ.

↳ Móc cục bộ chạy trên máy của bạn và phía máy chủ trên kho lưu trữ từ xa.


móc cục bộ:


↳ cam kết trước ↳ chuẩn bị-commit-tin nhắn ↳ tin nhắn cam kết ↳ sau cam kết ↳ sau kiểm tra ↳ pre-rebase


móc máy chủ:


↳ nhận trước ↳ cập nhật ↳ sau nhận


2️⃣ Tại sao -


↳ Ví dụ: bạn muốn chạy kiểm tra Lint trước khi các tệp được cam kết, vì vậy chúng tôi sử dụng hook pre-commit.


↳ một ví dụ khác mà bạn muốn thực thi tên nhánh tiêu chuẩn và quy ước thông báo cam kết, vì vậy chúng tôi sử dụng móc thông báo cam kết.


↳ và nhiều hơn nữa...


3️⃣ Làm thế nào -


↳ Để dễ dàng thiết lập, trong dự án JavaScript, hãy cài đặt thư viện có tên Husky và làm theo tài liệu

https://www.npmjs.com/package/husky


↳ Một ví dụ là tôi muốn thực thi tên nhánh, quy ước thông báo cam kết và chạy lint, đẹp hơn và kiểm tra.


↳ Chúng ta có thể sử dụng nhiều móc. Trong trường hợp của tôi, tôi sẽ thêm một hook thông điệp cam kết. Lý do tôi không chọn cam kết trước là vì nó không kiểm tra thông báo cam kết khi nó chạy trước cam kết. Tôi không muốn nhà phát triển chạy kiểm tra và không thực hiện được thông báo cam kết, sửa lỗi rồi chạy lại. Tôi muốn kiểm tra tin nhắn cam kết trước.


↳ Tạo một hook thông điệp cam kết, làm theo tài liệu của Husky và dán ví dụ sau:


 #!/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


↳ Bây giờ, bất cứ khi nào bạn cam kết, nó sẽ kiểm tra quy ước đặt tên nhánh và cam kết cùng với việc chạy kiểm tra lint. Cuối cùng, nó sẽ chạy thử nghiệm, sau khi mọi thứ khác đều ổn.

4️⃣ Kết quả -

✨ Tính nhất quán.

✨ Tiêu chuẩn hóa.

✨ Hãy quên đi những điều tầm thường.

✨ Tự động hóa và tập trung vào tác động.


Kết thúc:


Chúng tôi vừa nâng cao quy trình phát triển của bạn bằng Git Hook. 🚀


.....


Bây giờ bạn có thể tăng tốc quy trình phát triển của mình 🚀


Thế thôi các bạn! Tôi hy vọng nó là một bài đọc tốt cho bạn. Cảm ơn! ✨


👉 Theo dõi tôi trên GitHub & LinkedIn

L O A D I N G
. . . comments & more!

About Author

Syed Muhammad Yaseen HackerNoon profile picture
Syed Muhammad Yaseen@smy
Full Stack Engineer 3Y+ Exp. 🚀 ❯ JavaScript / TypeScript Ecosystem ❯ React, NextJS, NestJS, Microservices, AWS

chuyên mục

BÀI VIẾT NÀY CŨNG CÓ MẶT TẠI...