Git Hooks – cách sử dụng và các ví dụ về git hook - AGOLA Git Hooks – cách sử dụng và các ví dụ về git hook - AGOLA
5 / 100

Git Hooks là tiện ích nội bộ có thể cải thiện cách dùng Git. Hãy học cách cách nó hoạt động thật chính xác!

Git là gì?

Trước khi học về Hooks, hãy tìm hiểu về Git.

Git là ứng dụng kiểm soát phiên bản mã nguồn mở. Với ứng dụng này, chúng ta có thể theo dõi sự phát triển của phần mềm một cách chi tiết.

Git rất phổ biến với các lập trình viên và hầu hết các dự án nguồn mở đều sử dụng nền tảng này.

Git Hooks là gì?

Với Git, chúng ta có thể tạo các nhánh phát triển dự án, đăng ký những thay đổi và kiểm soát các phiên bản tuyệt đối. Tuy nhiên, bạn có thể tự động hóa quá trình này. Git tự động hóa có thể hoạt động ở cấp độ lập trình và triển khai. Đó là công dụng của Hook.

Git hooks là script shell chạy tự động trước hoặc sau khi Git thực thi lệnh quan trọng như Commit hoặc Push. Để Hook hoạt động, cần phải cung cấp quyền thực thi cho hệ thống Unix. Bằng cách sử dụng những scripts này, bạn sẽ tự động hóa được một số thứ.

Git sẽ kích hoạt các ví dụ về Git hooks ngay khi local repository khởi động. Cần lưu ý rằng các trang web như Github hoặc Gitlab không cho phép sử dụng nó trong instance đầu tiên. Vì vậy chúng chủ yếu được sử dụng trong các instance local hoặc private

Cách sử dụng Git Hooks

Hooks được lưu trữ trong thư mục .git/hooks/ của mỗi dự án đã được nhân bản hoặc trong local repository mới được tạo. Ở đó chúng ta sẽ tìm thấy nhiều ví dụ về Hooks.

Để kích hoạt hook, chỉ cần tạo file và lưu trong thư mục .git/hooks/. Tuy nhiên, tên file đã được Git bạn gán theo định nghĩa của Git như bên dưới:

Git Hook Lệnh Git  Mô tả
applypatch-msg.sample git am Khi thông báo patch được thay đổi
commit-msg.sample git commit Để đặt thông báo thực hiện commit
fsmonitor-watchman.sample launch watchman Để tích hợp watchman
post-update.sample git push Bằng cách cập nhật tất cả dữ liệu sau khi push
pre-applypatch.sample git am Trước khi áp dụng patch
pre-commit.sample git commit Trước khi commit
prepare-commit-msg.sample git commit Khi thông báo commit được thiết lập
pre-push.sample git push Trước khi push
pre-rebase.sample git rebase Trước khi bỏ qua hoặc nhập vào
pre-receive.sample git push Khi chúng ta push và nhận dữ liệu từ repository từ xa
update.sample git push Bằng cách cập nhật dữ liệu từ xa khi push

Như chúng ta có thể thấy, mọi Hook đều mang lệnh Git. Nhờ nó, chúng ta có thể tính toán khi nào thuận tiện để dùng Hook.

Ví dụ về Git Hooks

Công dụng của Hooks rất rộng, nhưng kiến thức về Bash và các ngôn ngữ khác như Python hoặc Ruby lại cần thiết để có thể tận dụng toàn bộ tiềm năng. Dưới đây là một số ví dụ cơ bản:

Hiển thị thông tin về việc thực hiện Commit 

Ví dụ này cho biết thông tin về hành động commit. Tạo file tên là prepare-commit-msg trong thư mục .git/hooks/ của repository. Sau đó, viết đoạn script sau:

#!/bin/sh

SOB=$(git config github.user)
grep -qs "^$SOB" "$1" || echo ". Cambio por @$SOB" >> "$1"

Sau đó save lại và thiết lập quyền thực thi cho file.

:~$ chmod +x prepare-commit-msg

Với Hook đơn giản này, khi thực hiện commit, chúng ta sẽ nhận được thông tin liên quan về nó ngay lập tức.

Tạo tài liệu khi các thay đổi được tải lên

Hook trước khi push cho phép tạo tài liệu của code nếu chúng ta có trình tạo. Mỗi khi chúng ta thực hiện thay đổi, tài liệu sẽ được thực hiện tự động.

Tạo pre-push trong cùng thư mục như trước đó và thêm script:

#!/bin/bash

doxygen Doxyfile
git add docs/
git commit -m "Update documentation ($(date +%[email protected]%R))"

Lưu file và cuối cùng là thiết lập quyền thực thi.

:~$ chmod +x pre-push

Tìm và khắc phục Trailing Whitespace trong Commit

Loại pre-commit Git Hooks này thực hiện khá đơn giản. Tạo file tên là pre-commit và thêm vào như sau:

#!/bin/bash -l

.git/hooks/pre-commit-master-no-no
if [[ $? == 1 ]]
then
exit 1
fi

.git/hooks/pre-commit-debugger
.git/hooks/pre-commit-trailing-spaces
.git/hooks/pre-commit-images
.git/hooks/pre-commit-pair

Bây giờ trailing whitespace sẽ được tìm thấy và khắc phục trong tất cả commit.

Kết luận

Git là công cụ quan trọng với các lập trình viên ngày nay. Git hooks là cách tốt để cải thiện công cụ này hơn nữa! Trong hướng dẫn này, chúng ta đã xem xét khái niệm cơ bản về tự động hóa các tiến trình xử lý bằng Git Hooks.

Tạo script cho Git Hooks có thể rắc rối nếu bạn không có cơ sở kiến thức vững chắc về ngôn ngữ lập trình, như bash.

Các lý do cần đọc trước khi quyết định liên hệ tôi 

  1. Tham gia group Mua bán Google Ads và Google Shopping :

    https://www.facebook.com/groups/314513929300715

  2. Tham gia group mua bán cho thuê tài khoản BM Agency :

    https://www.facebook.com/groups/1204318359703229

  3. AGOLA chỉ cung cấp dịch vụ không có dịch vụ tư vấn hiểu tới đâu bán tới đó !
  4. AGOLA ngừng cung cấp các gói dịch cho bọn có Slogan " Tuần đổi xe tháng mua nhà " hoặc liên quan !
  5. Các dịch vụ liên quan đến hướng dẫn : diễn ra từ 5-30 phút thông qua teamview hoặc ultral thời gian càng ngắn giá tiền càng cao nên các bạn đọc kỹ trước khi sử dụng
  6. Các sản phẩm dịch vụ không có thương thảo giá và cũng không có hỏi thêm
  7. Không làm việc với mấy thằng giao lưu với lũ suốt ngày dùng VPS remote này remote kia sock này sock kia đổi ngôn ngữ này đổi ngôn ngữ kia add page này sang page kia đổi đá cá kiểu con đà điều ... đây là một lũ ngu thời hiện đại khi bạn muốn vượt rào vòng đầu bạn đã gian lận thì vượt vào đít kèm với đó khả năng dính liên đơi nghi ngờ hành vi bất thường là rất cao nó như kiểu hành vi của bạn có tần xuất giống như hành vi của bọn gian lận khá nhiều nó cho bạn vào động cơ gian lận có nguy cơ nó sẽ pem luôn nhé ... và ti tỷ lý do khác nhé nếu bọn mày mà làm theo tụi nó lên cam được tao cho 20 triệu tiền cafe cà pháo
  8. Không bán vĩnh viễn mọi dịch vụ mua nhầm đòi đổi sang gói dịch vụ khác
  9. Thông tin bảo hành gần như không có nhưng cũng có một số dịch vụ có bảo hành đề nghị đọc kỹ trước khi quyết định mua
  10. Quyết định mua hàng là đồng ý các điều khoản mua bán và điều khoản không được lấy lại tiền và không bồi hoàn
  11. Mua hàng thì xin đọc kỹ điều khoản ở từng mô tả trước khi quyết định nhấc máy liên hệ ở thông tin của từng gói dịch vụ
  12. Mọi giao dịch đều được phải bắt buộc chụp màn hình chuyển khoản gửi vào Zalo
  13. Các đối tượng cố ý chuyển tiền gói này để trục lợi sử dụng gói khác đều được coi là hình vi lừa đảo ! Cố ý ghi nội dung hiểu lầm về chuyển tiền để đôi co đòi sử dụng gói dịch vụ khác cũng vậy !
  14. Tôi là dân khối A nên việc viết sai lỗi chính tả thì kệ mẹ tôi thích thì mua không thích thì đừng soi đi ra chỗ khác do tôi không có soát lại chính tả nên các bạn đọc thay vì thắc mắc thì thông cảm giùm tôi ! miễn sao tôi truyền tải thông tin bạn đọc bạn thấy hiểu được bạn sử dụng không được bạn tìm bên khác
  15. Tôi không làm việc với bọn cử nhân viên là các công ty Agency , truyền thông gọi hỏi dò hỏi luyên thuyên ! Nếu cố tình tôi sẽ dùng CRM Agency cấm lock chạy Ads vĩnh viễn khi nhìn thấy đuôi theo rõi của doanh nghiệp đó mà tôi đã gán.
  16. Tôi không làm việc với bọn nào thì tôi chạy tiền tỷ tôi tiêu tiền tỷ nhưng chạy demo trước nếu ngon thì vít lớn nhưng sau 3 ngày thuê thấy đéo thấy như cam kết về ngân sách
  17. Tôi không hợp tác ăn chia hay kiểu Win Win đôi bên có lợi
  18. Tất cả những câu hỏi khi gọi điện khiến tôi nghĩ rằng bạn chưa đọc kỹ thông tin trên website sẽ được tôi từ chối vô điều kiện
  19. Không làm việc các công ty có các nhân vật nổi tiếng trên các đài báo truyền hình bởi vậy bớt quảng cáo
  20. Các đối tượng cố tình lên mạng tìm kiểm thông tin tôi và không có trao đổi được tôi dùng Zalo : O9O9.456.866 gửi STK thông tin thanh toán của tôi qua zalo đó mà vẫn chuyển tiền vào tài khoản của tôi được coi là hình vi lừa đảo cố tình trọc phá và lợi dụng sử dụng lừa đảo để mong muốn sử dụng dịch vụ của tôi nhưng vì cấm nên phải làm vậy
  21. Kiến thức của đại đa số dân trên mạng không sai mà chỉ đúng với bọn gà mờ mà thôi kiểu như bạn học lớp 1 cô giáo nói 1 không trừ được cho 2 lên cấp 2 cô giáo nói 1 trừ được cho 2 ! Lúc đó cô giáo cấp 1 hay thầy giáo cấp 2 không nói ai đúng ai sai được mà tại thời điểm đó bạn thấy nó đúng còn khi đi sâu vào nó đéo đúng 😀 ! Cũng như việc tôi bán dịch vụ cho dân trong nghề việc tôi có bắt mấy thằng cấp 1 nuốt kiến thức chuyên sâu của cấp 2 là không được bởi vậy dân nào hiểu sẽ liên hệ mua chứ đừng kiểu lơ mở hỏi cho vui cửa vui nhà
  22. Không làm việc với bọn hở miệng ra là em từng có BM2500 với BM1000
  23. Không lamg việc với bọn hở mồm ra là fake mà đến cái via kiểm tra như thế nào là 1 cái via Việt hay via us... cũng đéo biết kiểm tra thế mà cứ đi nghe mấy thằng trên mạng Fake Ip , Fake đổi ngôn ngữ này ngôn ngữ kia ... tùm lum tà la login đổi via các kiểu con đa điểu rồi nghe thì vui tai mà làm cũng được không đéo có biết lý do chỉ có lý do vớ vẩn - Không tin tao đố bọn mày hỏi thử nó 1 câu via Việt là như thế nào đố thằng đó biết đó xàm xí - hay via việt là thông tin Việt Nam hahaha !
  24. Không làm việc với bọn nào thì đổi mạng 4g kết nối này kết nối kia lên cam có con cặc ấy mấy cái công nghệ cổ lỗ sĩ này bọn code tool click quảng cáo nó sài gần 10 năm nay rồi lòe dân gà hoài dần dần ko hiệu quả bọn nó ko dùng rồi lũ đó biến mất khỏi thị trường bán tài khoản
  25. Quyết tâm cấm log mọi thằng liên quan tới BM2500 vĩnh viễn hạn chế tài khoản quảng cáo liên đới từ 6 tới 2 năm kể cả cho kháng XMDT theo tút trên mạng
  26. Tiếp tục sắp tới sẽ thanh lọc toàn bộ Invoice
  27. Bọn mày nghĩ xem mẹ chúng nó giỏi vậy nhận hàng về mà chạy quảng cáo đi giàu hơn ko sao phải đi kiếm tiền dạy học ba láp ba xàm đó xem thấy quảng cáo của tụi đó trước đây chạy quảng cáo tràn lan quảng bá khóa học như đúng rồi giờ chạy đi ba láp ba xàm

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Call Now Button
X