Git Hooks – cách sử dụng và các ví dụ về git hook

Rate this post

Phát triển ứng dụng có chất lượng là một quá trình phức tạp. Để thành công, chúng ta cần sử dụng những công cụ hỗ trợ xử lý việc coding. Các tiến trình này nhiều khi cần tự động hóa. Do nhu cầu của lập trình viên và sysadmin nên quy trình này sẽ giảm thời gian triển khai. Git là một trong những công cụ phổ biến nhất để đáp ứng mục đích cụ thể này. Trong hướng dẫn này, cùng chún tôi tìm hiểu về Git Hooks để tăng tính hiệu quả của một dự án VPS!

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 HookLệnh Git Mô tả
applypatch-msg.samplegit amKhi thông báo patch được thay đổi
commit-msg.samplegit commitĐể đặt thông báo thực hiện commit
fsmonitor-watchman.samplelaunch watchmanĐể tích hợp watchman
post-update.samplegit pushBằng cách cập nhật tất cả dữ liệu sau khi push
pre-applypatch.samplegit amTrước khi áp dụng patch
pre-commit.samplegit commitTrước khi commit
prepare-commit-msg.samplegit commitKhi thông báo commit được thiết lập
pre-push.samplegit pushTrước khi push
pre-rebase.samplegit rebaseTrước khi bỏ qua hoặc nhập vào
pre-receive.samplegit pushKhi chúng ta push và nhận dữ liệu từ repository từ xa
update.samplegit pushBằ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 +%F@%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.

Nhưng giờ bạn đã biết Git Hooks là gì, bạn cũng học cách sử dụng Git Hooks cơ bản đầu. Chúng tôi khuyên bạn nên làm theo các tài liệu chính thống và tiếp tục tìm hiểu sâu hơn!

0973.393.165