Bài giảng Nhập môn công nghệ phần mềm - Tuần 5: Quản lý cấu hình phần mềm và thực hành với công cụ GIT
Làm việc với nhánh (Branch)
•Nhánh master: lưu trữ lịch sử phát hành chính thức (production)
•Nhánh develop: Nhánh tích hợp cho các tính năng (dev)
•Nhánh staging: được tách ra từ develop để QA/QC kiểm tra
Xử lí merge request
Merge
• Tích hợp 2 nhánh
• Tạo ra 1 merge commit và thêm vào nhánh đích
• Cây cực kì rối, khó nhìn
• Tìm kiểm và sửa lỗi dễ dàng
Rebase
• History dễ nhìn, thẳng hàng
• Đem từng commit ở nhánh nguồn đặt lên nhánh chính theo đúng thứ tự
• Dễ gây xung đột
65 trang |
Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 567 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn công nghệ phần mềm - Tuần 5: Quản lý cấu hình phần mềm và thực hành với công cụ GIT, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nhập môn Công nghệ phần mềm
Introduction to Software Engineering
(IT3180)
Bài tập tuần 05
Quản lý cấu hình phần mềm &
Thực hành với công cụ GIT
Thông tin GV
Mục tiêu
210/14/2020
Department of Software Engineering -
SOICT/HUST
• Thực hiện các bài tập (câu hỏi) về nội dung
Quản lý cấu hình phần mềm
• Thực hành với công cụ GIT
Đánh giá
310/14/2020
Department of Software Engineering -
SOICT/HUST
• Hoàn thành các bài tập về nội dung Quản lý
cấu hình phần mềm, nắm được khái niệm,
các hoạt động và công cụ quản lý cấu hình
• Hoàn thành bài thực hành với công cụ GIT
Bài 1.1
a) Loại nào sau đây là một phần của đầu ra của quy trình
phần mềm?
1. Chương trình máy tính
2. Tài liệu mô tả các chương trình máy tính
3. Dữ liệu
4. Tất cả những phương án trên
10/14/2020
Department of Software Engineering -
SOICT/HUST 4
Bài 1.1
b) Khái niệm quản lý cấu hình phần mềm nào giúp chúng
ta kiểm soát sự thay đổi mà không cản trở đến những
thay đổi chính đáng?
1. Baselines
2. Source code
3. Data model
4. Các phương án trên đều sai
10/14/2020
Department of Software Engineering -
SOICT/HUST 5
Bài 1.1
c) Quá trình nào sau đây tập hợp các thành phần chương
trình, dữ liệu và thư viện, sau đó biên dịch và liên kết các
thành phần này để tạo ra một hệ thống thực thi?
1. Version management
2. Release management
3. Change management
4. System building
10/14/2020
Department of Software Engineering -
SOICT/HUST 6
Bài 1.1
d) Hoạt động nào sau đây không phải là Hoạt
động quản lý cấu hình phần mềm?
1. Configuration item identification
2. Risk management
3. Release management
4. Branch management
10/14/2020
Department of Software Engineering -
SOICT/HUST 7
Bài 1.1
e) Những gì liên quan đến việc chuẩn bị phần
mềm để phát hành bên ngoài và theo dõi các
phiên bản hệ thống đã được phát hành cho khách
hàng sử dụng?
1. System building
2. Release management
3. Change management
4. Version management
10/14/2020
Department of Software Engineering -
SOICT/HUST 8
Bài 1.2
910/14/2020
Department of Software Engineering -
SOICT/HUST
a) Mục đích chính của Quản lý cấu hình phần mềm (SCM) là gì?
b) Tên của quá trình sẽ đảm bảo rằng các phiên bản khác nhau của hệ
thống và các thành phần của nó được ghi lại và duy trì?
c) Những công việc chính của Quản lý cấu hình phần mềm (SCM) là
gì?
d) Một mô hình kho lưu trữ (repository) được sử dụng để làm gì? Các
yêu cầu về kho lưu trữ (repository) có giống những yêu cầu đối với
cơ sở dữ liệu điển hình không?
e) Hãy lấy ví dụ về các đối tượng cấu hình cơ bản do kỹ sư phần mềm
tạo ra trong một số giai đoạn của quá trình phát triển phần mềm?
Công nghệ: GIT
Sơ lược về Git
•Khái niệm: là một hệ thống quản lí phiên bản phân tán
•Là phần mềm quản lí mã nguồn phổ biến nhất
•Dễ sử dụng, an toàn và nhanh chóng
Sơ lược về Git
•Quản lý phiên bản (version control) tập trung và phân tán
22
Centralized Version Control
Source:
23
Distributed Version Control
Source:
Quy trình sản xuất phần mềm với Git
1. Cài đặt Git
2. Khởi tạo git trong project
3. Làm việc với branch
4. Xử lí merge request
5. Vấn đề conflict
6. Deploy server dùng git *
The whole picture
my-project docs manual.docx
user_docs.doc
x
src
main.rkt
module1.rkt
module2.rkt
module3.rkt
.git
pull
your local machine
a server, somewhere on the
internet, eg. github
p
u
ll
commit
push
Working Directory, Staging, Committed
Working Directory, Staging, Committed
•Các thuật ngữ:
• Branch
• Lịch sử của những thay đổi liên tiếp
đối với mã nguồn
• Một nhánh mới có thể được tạo bất
kỳ lúc nào, từ bất kỳ commit hiện có
• Có thể đại diện cho các phiên bản
của mã
• Version 1.x, 2.x, 3.x, etc.
• Có thể đại diện cho các bản sửa lỗi
nhỏ / phát triển tính năng
• Branches are cheap
• Chuyển đổi nhanh chóng
• Dễ dàng “merge" vào các chi nhánh
khác
• Dễ tạo, dễ hủy
• Tag
• Biểu diễn một single commit
• Thường thân thiện với người dùng
• Version Numbers
• Một Repository có thể được tạo
bằng cách:
• Nhân bản một cái hiện có (git clone)
• Tạo một cái cục bộ (locally) mới (git
init)
Working Directory, Staging, Committed
Working Directory, Staging, Committed
•Các thuật ngữ:
• Commit
• Một snapshot cụ thể trong cây phát triển
• Tập hợp các thay đổi được áp dụng cho các tệp của dự án
• Text changes, File and Directory addition/removal, chmod
• Metadata về thay đổi
• Được xác định bởi SHA-1 Hash
• Có thể được rút ngắn thành khoảng. 6 ký tự để sử dụng CLI
• (e.g., “git show 5b16a5”)
• HEAD –commit gần đây nhất
• ORIG_HEAD – sau khi merge, HEAD trước đó
• ~n – commit thứ nth trước
• e.g., 5b16a5~2 or HEAD~5
• master@{01-Jan-2018} – commit cuối cùng trên nhánh master branch trước
January 1, 2018
Working Directory, Staging, Committed
•Các thuật ngữ:
• Working Files
• Các tệp tin hiện thời trong File System
• The Stage (còn gọi là “index”)
• Staging là bước đầu tiện để tạo một
commit
• stage được dùng để báo cho Git biết
những thay đổi nào được bao gồm trong
commit
• Các thay đổi tệp phải được “added” vào
stage một cách tường minh
• Chỉ những thay đổi được staged thì sẽ
được committed
• Checkout
• Thay thế các tệp đang làm việc hiện tại
bằng các tệp từ một branch cụ thể hoặc
commit
• Sử dụng “git diff” để xem những thay
đổi nào tồn tại.
• Sử dụng “git add” để nói với Git rằng
các thay đổi của tệp phải được thêm
vào stage.
• Sử dụng “git status” để xem các thay
đổi trong tệp làm việc của bạn, cũng
như những thay đổi nào đã được thực
hiện cho commit.
• Sử dụng “git commit” để chuyển đổi tất
cả các thay đổi theo giai đoạn thành
một commit.
• git commit -m “my commit message”
• git commit -m “my commit message” -a
• Sẽ tự động sắp xếp tất cả các tệp được
repo theo dõi và thêm chúng vào commit.
• Không nên làm điều này.
Working Directory, Staging, Committed
Workflow tổng quát
1. Chọn một bug/feature để giải quyết
2. Checkout nhánh phù hợp
3. Pull các bổ sung mới nhất từ kho lưu trữ chính
4. Tạo một branch cho bug/feature yêu cầu
5. Thực hiện viết code / lập trình & commit
6. Push các thay đổi đến các kho lưu trữ từ xa (remote repo.)
7. Tạo một pull request đến main repo
•pull request là nơi các lập trình viên khác xem xét mã của bạn
và đưa ra nhận xét / đề xuất.
•Nếu cần thay đổi mã của bạn, hãy lặp lại quy trình.
Không commit trực
tiếp vào main repo.
Working Directory, Staging, Committed
Local
1. Cài đặt Git
1. Download git: https://git-scm.com/downloads
2. Kiểm tra version
3. Cấu hình thông tin cá nhân
4. SSH keys
git –version
git config –global user.name “Name”
git config –global user.email “Email”
2. Khởi tạo git trong project
•Khởi tạo
•Kiểm tra repository
• .gitignore
git init // khởi tạo thư mục .init
git clone [url] [folder_name] // clone source code từ url
git remote –v // xem các liên kết
git remote set-url origin [url] // thay đổi liên kết
Một số lệnh cơ bản
git add [ -A | . | -u ] // thêm / thay đổi file, thư mục
git status // kiểm tra trạng thái của project
git commit –m “Content commit” // ghi lại việc them / thay đổi
git push origin [branch] // thêm commit vào kho lưu trữ
git pull // cập nhật kho lưu trữ
Một số lệnh quan trọng
git merge/ rebase // ghép 2 nhánh
git reset // xóa những cập nhật hiện tại
git checkout // chuyển nhánh
git stash // lưu lại thay đổi chưa commit
git log // xem lịch sử commit
git revert // quay lại trạng thái trước đó
Các câu lệnh cơ bản
git@github.com:
user/project.git
clone
project
>> git clone git@github.com:user/project.git
>> git checkout –b bugfixBranch
>> touch file3
>> echo “new code” >> file1
>> git status
modified: file1
untracked files: file3
>> git add .
>> git status
modified: file1
new file: file3
>> git commit –m “fixed stuff”
>> cd project
>> ls
file1
file2
branch
checkout
modify
add
commit
merge
>> git checkout master
>> git diff bugfixBranch
modified file1
+fixed stuff
created file3
>> git merge bugfixBranch
git@github.com:
user/project.git
push
project
>> git push origin master
>> git request-pull bigProjectv1.0 \ https://github.com/user/project
master \
> pullrequest.txt
Các câu lệnh cơ bản
Các câu lệnh cơ bản
Tạo thư mục Git
Di chuyển đến Git/
Các câu lệnh cơ bản
Khơi tạo .init
Các câu lệnh cơ bản
Kiểm tra trạng thái
Các câu lệnh cơ bản
Cập nhật thay đổi
Tạo ra 1 commit
Các câu lệnh cơ bản
Các câu lệnh cơ bản
Kết nối với Github
Các câu lệnh cơ bản
Đưa commit lên
kho lưu trữ
Các câu lệnh cơ bản
3. Làm việc với nhánh (Branch)
•Branch chính
• Master
• Developer
• Staging
•Branch hỗ trợ
• Tính năng
• Release
• Sửa lỗi (hotfix)
3. Làm việc với nhánh (Branch)
•Nhánh master: lưu trữ lịch sử phát hành chính thức (production)
•Nhánh develop: Nhánh tích hợp cho các tính năng (dev)
•Nhánh staging: được tách ra từ develop để QA/QC kiểm tra
Thao tác với nhánh cơ bản
Chuyển nhánh khác
Xóa nhánh
Git checkout [branch]
Git checkout –b [new_branch]
Git checkout [branch]
Git checkout –b [new_branch]
4. Xử lí merge request
Merge
• Tích hợp 2 nhánh
• Tạo ra 1 merge commit và thêm vào nhánh đích
• Cây cực kì rối, khó nhìn
• Tìm kiểm và sửa lỗi dễ dàng
Rebase
• History dễ nhìn, thẳng hàng
• Đem từng commit ở nhánh nguồn đặt lên nhánh chính theo đúng thứ tự
• Dễ gây xung đột
Merge & Rebase
Merge & Rebase
Chuyển nhánh
develop
Merge & Rebase
Merge & Rebase
Merge & Rebase
Chuyển nhánh
master
Merge & Rebase
Merge nhánh
develop vào master
Merge & Rebase
Merge & Rebase
5. Vấn đề conflict
•Xảy ra khi hai hay nhiều người thay đổi cùng một tệp
•Phát hiện khi xử lí merge request
master|MERGING??
6. Deploy server dùng git *
1. Login vào server
2. Cài đặt git
3. Khởi tạo git trong project
4. Chạy chương trình
ssh your_user@server_ip_address // kết nối với server
sudo apt-get update // cập nhật apt-get
sudo apt-get install git // cài đặt git
git clone url // Lấy code từ url
CI/CD *
•Continuous Integration/ Continuous Delivery
•Quá trình tích hợp thường xuyên + cập nhật phiên bản mới
Tài liệu tham khảo
•https://git-scm.com/downloads
•Git Flow
Các file đính kèm theo tài liệu này:
- bai_giang_nhap_mon_cong_nghe_phan_mem_tuan_5_quan_ly_cau_hin.pdf