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. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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ụ
  10. 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
  11. 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 !
  12. 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
  13. 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.
  14. 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
  15. Tôi không hợp tác ăn chia hay kiểu Win Win đôi bên có lợi
  16. 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
  17. 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
  18. 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
  19. 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à

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