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

pdf65 trang | Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 582 | Lượt tải: 0download
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:

  • pdfbai_giang_nhap_mon_cong_nghe_phan_mem_tuan_5_quan_ly_cau_hin.pdf