YOMEDIA
ADSENSE
Tài liệu SVN tiếng Việt
89
lượt xem 7
download
lượt xem 7
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Giới thiệu về SVN, các khái niệm cơ bản về SVN, cài đặt môi trường SVN, vòng đời trong SVN, tiến trình Checkout trong SVN,... là những nội dung chính trong tài liệu "SVN tiếng Việt". Mời các bạn cùng tham khảo để có thêm tài liệu phục vụ nhu cầu học tập và nghiên cứu.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Tài liệu SVN tiếng Việt
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Mục lục Giới thiệu về SVN ................................................................................................................. 2 Đối với độc giả ...................................................................................................................... 2 Điều kiện tiền đề ................................................................................................................... 2 Các khái niệm cơ bản về SVN.............................................................................................. 3 Hệ thống quản lý phiên bản (VCS) trong SVN là gì? ......................................................... 3 Thuật ngữ kiểm soát phiên bản (Version control) trong SVN............................................. 3 Cài đặt môi trường SVN ....................................................................................................... 4 Cài đặt SVN...................................................................................................................... 4 Cài đặt Apache ................................................................................................................. 5 Cài đặt tài khoản sử dụng trong SVN................................................................................ 6 Cài đặt repository trong SVN............................................................................................. 7 Vòng đời trong SVN.............................................................................................................. 9 Tạo repository trong SVN:................................................................................................. 9 Tiến trình Checkout trong SVN ......................................................................................... 9 Tiến trình Update trong SVN ........................................................................................... 10 Thực hiện các thay đổi trong SVN .................................................................................. 10 Duyệt các thay đổi (review) trong SVN ............................................................................ 10 Sửa các lỗi trong SVN .................................................................................................... 11 Giải quyết các xung đột trong SVN:................................................................................. 11 Ký thác các thay đổi (commit) trong SVN ........................................................................ 11 Tiến trình Checkout trong SVN ........................................................................................... 12 Thực hiện các thay đổi trong SVN ...................................................................................... 13 Review các thay đổi trong SVN........................................................................................... 15 Tiến trình Update trong SVN ............................................................................................... 17 Sửa lỗi trong SVN............................................................................................................... 22 Xử lý các xung đột (Conflict) trong SVN .............................................................................. 25 Bước 1: Kiểm tra xung đột .............................................................................................. 27 http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Bước 2: Trì hoãn các xung đột........................................................................................ 28 Bước 3: Giải quyết xung đột ........................................................................................... 29 Hoạt động Tag trong SVN .................................................................................................. 29 Chia nhánh trong SVN........................................................................................................ 30 Tài liệu tham khảo SVN ...................................................................................................... 40 Các đường link hữu ích về SVN ..................................................................................... 40 Giới thiệu về SVN Apache Subversion thường được viết tắt là SVN, là một phần mềm mã nguồn mở dùng để quản lý và kiểm tra các phiên bản mã nguồn khác nhau trong quá trình phát triển phần mềm. Subversion được tạo bởi CollabNet Inc trong năm 2000, nhưng bây giờ nó được phát triển bởi một dự án của Apache Software Foundation, và nó là một phần không thể thiếu của cộng đồng các nhà lập trình và phát triển web. Mời các bạn vào trang chủ của Viet Jack để tham khảo thêm các loạt bài online miễn phí khác Loạt bài hướng dẫn của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint Đối với độc giả Phần hướng dẫn này được thiết kế cho những ai quan tâm về các khái niệm của hệ thống SVN theo các bước đơn giản và logic. Sau khi kết thúc phần hướng dẫn này, bạn sẽ có sự hiểu biết hơn về SVN, từ đó có thể nâng cao trình độ của mình. Điều kiện tiền đề Trước khi theo tiến trình của phần hướng dẫn này, bạn nên có kiến thức cơ bản về các thuật ngữ như ngôn ngữ chương trình, mã nguồn, tài liệu…. Bởi vì sử dụng SVN để giải quyết tất cả các mức độ trong các dự án phần mềm trong tổ chức của bạn, nó sẽ là tốt nếu bạn có kiến thức làm việc cơ bản về phát triển phần mềm và tiến trình kiểm tra phần mềm. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 2
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Các khái niệm cơ bản về SVN Hệ thống quản lý phiên bản (VCS) trong SVN là gì? Version Control System (VCS) là một phần mềm mà giúp các nhà phát triển phần mềm làm việc với nhau và duy trì một lịch sử đầy đủ công việc của họ. Dưới đây là mục tiêu của một Version Control System Cho phép các nhà phát triển phần mềm làm việc tương tác với nhau; Không viết đè lên thay đổi của mỗi thành viên tạo ra; Duy trì lịch sử của mỗi phiên bản. Một VCS được chia thành hai kiểu Hệ thống quản lý phiên bản tập trung (CVCS), và Hệ thống quản lý phiên bản phân phối/phân cấp (DVCS). Trong phần hướng dẫn này, chúng ta sẽ chỉ tập trung vào hệ thống phiên bản tập trung mà đặc biệt là Subversion. Subversion sử dụng một máy chủ trung tâm để giữ tất cả các file và cung cấp quyền hợp tác của team. Thuật ngữ kiểm soát phiên bản (Version control) trong SVN Hãy cùng bàn về một số mục mà chúng ta sử dụng trong phần hướng dẫn này: Repository (Kho chứa): Một repository là trái tim của bất cứ hệ thống quản lý phiên bản. Nó là khu vực trung tâm để các nhà phát triển giữ tất cả công việc của họ. Kho lưu không chỉ lưu các file mà còn lưu giữ cả lịch sử làm việc. Kho lưu được truy cập thông qua mạng, thực hiện vai trò như một máy chủ và công cụ điều khiển phiên bản là một máy khách. Các máy khách có thể kết nối với repository và sau đó họ có thể giữ/lấy lại những thay đổi họ thực hiện tới/từ repository. Bằng cách giữ các thay đổi , một khách tạo các thay đổi này tới người khác và bằng cách lấy lại những thay đổi, một khách có thể nhận được các thay đổi được thực hiện bởi người khác như là một bản sao công việc. Trunk (Thân): Một thân là một thư mục tại đó tất cả các phát triển chính xảy ra và thường được kiểm tra bởi các nhà phát triển làm việc trên dự án. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 3
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Tags (Thẻ): Thư mục các thẻ được sử dụng để giữ các ảnh chụp nhanh (snapshot) được đặt tên của dự án. Hoạt động thẻ cho phép đặt các tên để mô tả và dễ ghi nhớ cho các phiên bản cụ thể trong repository. Ví dụ, LAST_STABLE_CODE_BEFORE_EMAIL_SUPPORT thì dễ ghi nhớ hơn 7ceef8cb-3799-40dd-a067-c216ec2e5247 của repository UUID và Revision: 13 Branches (Nhánh): Hoạt động nhánh được sử dụng để tạo một tiến trình khác của sự phát triển. Nó hữu ích khi bạn muốn tiến trình phát triển của bạn phân theo hai hướng khác nhau. Ví dụ, khi bạn công bố phiên bản 5.0, bạn có thể muốn tạo ra một nhánh để phát triển các tính năng phiên bản 6.0 mà được giữ riêng rẽ với phiên bản 5.0. Working copy (Bản sao công việc ): Bản sao công việc là hình chụp nhanh (snapshot) của repository. Kho lưu được chia sẻ bởi cả team, nhưng người ta không thể sửa nó một cách trực tiếp. Thay vào đó mỗi nhà lập trình kiểm tra bản sao công việc. Bản sao công việc là khu vực làm việc riêng, tại đó các nhà lập trình có thể thực hiện công việc của họ riêng rẽ một mình, cách biệt với phần còn lại của team. Các thay đổi commit: Commit là tiến trình của việc giữ các thay đổi từ khu vực làm việc riêng tới máy chủ trung tâm. Sau khi commit, các thay đổi sẵn sàng được sử dụng bởi các thành viên khác trong team. Các thành viên khác có thể lấy lại các thay đổi này bằng cách cập nhật bản sao công việc. Commit là một hoạt động nguyên tử (atomic operation) tức là không thể chia nhỏ hoạt động đó được. Hoặc là nó thành công hoặc là thất bại. Bạn không bao giờ nhìn thấy một commit hoàn thành giữa chừng. Cài đặt môi trường SVN Cài đặt SVN Subversion là một công cụ quản lý phiên bản mã nguồn mở. Nó có sẵn và miễn phí trên mạng. Nó đi kèm theo các bản mặc định với các bản phân phối của GNU/Linux, vì thế nó có thể đã được cài đặt trên máy của bạn. Để kiểm tra có hay không nó đã được cài đặt trên máy, bạn sử dụng lệnh sau: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 4
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com [jerry@CentOS ~]$ svn --version Nếu bản Subversion client chưa được cài đặt, thì khi đó lệnh sẽ báo lỗi, ngoài ra nó sẽ hiển thị phiên bản của phần mềm cài đặt. [jerry@CentOS ~]$ svn --version -bash: svn: command not found Nếu bạn đang sử dụng RPM- trên nền tảng GNU/Linux, thì khi đó bạn sử dụng lệnh yum để cài đặt. Sau khi cài đặt thành công, chạy lệnh svn--version. [jerry@CentOS ~]$ su - Password: [root@CentOS ~]# yum install subversion [jerry@CentOS ~]$ svn --version svn, version 1.6.11 (r934486) compiled Jun 23 2012, 00:44:03 Nếu bạn đang sử dụng Debian- trên nền tảng GNU/Linux, bạn sử dụng lệnh apt để cài đặt. [jerry@Ubuntu]$ sudo apt-get update [sudo] password for jerry: [jerry@Ubuntu]$ sudo apt-get install subversion [jerry@Ubuntu]$ svn --version svn, version 1.7.5 (r1336830) compiled Jun 21 2013, 22:11:49 Cài đặt Apache Chúng ta đã thấy cách để cài đặt Subversion client trên GNU/Linux. Bây giờ hãy xem cách để tạo một repository mới và cho phép người sử dụng truy cập. Trên server chúng ta phải cài đặt môđun Apache httpd và công cụ svnadmin. [jerry@CentOS ~]$ su - Password: [root@CentOS ~]# yum install mod_dav_svn subversion http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 5
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Gói mod_dav_svn cho phép truy cập tới repository bằng cách sử dụng HTTP, thông qua máy chủ Apache http và gói subversion cài đặt công cụ svnadmin. Subversion đọc cấu hình từ tệp /etc/httpd/conf.d/subversion.conf. Sau khi thêm cấu hình, tệp subversion.conf trông giống như sau: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so DAV svn SVNParentPath /var/www/svn AuthType Basic AuthName "Authorization Realm" AuthUserFile /etc/svn-users Require valid-user Bây giờ chúng ta tạo các subversion client và cho phép chúng truy cập vào repository. Lệnhhtpasswd được sử dụng để tạo và cập nhật file thuần văn bản mà được sử dụng để giữ tên sử dụng (username)và mật khẩu (password) cho sự xác nhận cơ bản của người dùng HTTP. Tùy chọn „-c‟ tạo file mật khẩu (password), nếu mật khẩu (password) đã tồn tại, nó viết đè lên. Đó là tại sao chỉ sử dụng tùy chọn „-c‟ vào lần đầu tiên. Tùy chọn „-m‟ cho phép mật mã hóa MD5 cho các mật khẩu (password). Cài đặt tài khoản sử dụng trong SVN Bây giờ chúng ta tạo một tài khoản sử dụng tom. [root@CentOS ~]# htpasswd -cm /etc/svn-users tom New password: Re-type new password: Adding password for user tom Bây giờ tạo ra tài khoản jerry [root@CentOS ~]# htpasswd -m /etc/svn-users jerry New password: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 6
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Re-type new password: Adding password for user jerry [root@CentOS ~]# Tạo thư mục gốc subversion để giữ tất cả phần công việc (theo dõi ở /etc/httpd/conf.d/subversion.conf). [root@CentOS ~]# mkdir /var/www/svn [root@CentOS ~]# cd /var/www../svn/ Cài đặt repository trong SVN Tạo repository cho dự án đặt tên là project_repo. Lệnh svnadmin sẽ tạo một repository mới và một vài thư mục khác bên trong đó để giữ siêu dữ liệu. [root@CentOS svn]# svnadmin create project_repo [root@CentOS svn]# ls -l project_repo total 24 drwxr-xr-x. 2 root root 4096 Aug 4 22:30 conf drwxr-sr-x. 6 root root 4096 Aug 4 22:30 db -r--r--r--. 1 root root 2 Aug 4 22:30 format drwxr-xr-x. 2 root root 4096 Aug 4 22:30 hooks drwxr-xr-x. 2 root root 4096 Aug 4 22:30 locks -rw-r--r--. 1 root root 229 Aug 4 22:30 README.txt Bây giờ chúng ta thay đổi người sử dụng và sở hữu nhóm của repository. [root@CentOS svn]# chown -R apache.apache project_repo/ Kiểm tra có hay không SELinux được cho phép hoặc không bằng cách sử dụng công cụ trạng thái SELinux. [root@CentOS svn]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 7
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Đối với server của chúng ta, SELinux được cho phép, vì thế chúng ta phải thay đổi bối cảnh an toàn SELinux. [root@CentOS svn]# chcon -R -t httpd_sys_content_t /var/www../svn/project_repo/ Để cho phép các commit qua HTTP, chạy lệnh sau: [root@CentOS svn]# chcon -R -t httpd_sys_rw_content_t /var/www../svn/project_repo/ Restart máy chủ Apache và chúng ta đã làm xong việc định cấu hình cho server Apache. [root@CentOS svn]# service httpd restart Stopping httpd: [FAILED] Starting httpd: httpd: apr_sockaddr_info_get() failed for CentOS httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ] [root@CentOS svn]# service httpd status httpd (pid 1372) is running... [root@CentOS svn]# Chúng ta đã định cấu hình cho server Apache thành công, bây giờ chúng ta sẽ định cấu hình cho repository. Để repository cung cấp quyền truy cập tới các người sử dụng xác thực nào đó và để sử dụng file ủy quyền mặc định, bạn gắn các dòng sau vào tệpproject_repo/conf/svnserve.conf. anon-access = none authz-db = authz Theo quy ước, mỗi dự án subversion có các thư mục thân (trunk), thẻ (tag) và các nhánh (branches) trực tiếp dưới thư mục gốc của dự án. Thân trunk là thư mục tại đó tất cả sự tiến triển chính diễn ra và thường được kiểm tra bởi các nhà lập trình làm việc trên dự án đó. Thư mục thẻ tags được sử dụng để giữ các ảnh chụp nhanh (snapshot) được đặt tên của dự án. Khi tạo một công bố sản phẩm, team sẽ ghi thẻ code mà thực hiện trong công bố. Thư mục nhánh branches được sử dụng khi bạn muốn phân tuyến phát triển. Bây giờ chúng ta hãy cùng tạo ra cấu trúc thư mục trunk, tags, và branches dưới repository của dự án. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 8
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com [root@CentOS svn]# mkdir /tmp/svn-template [root@CentOS svn]# mkdir /tmp/svn-template/trunk [root@CentOS svn]# mkdir /tmp/svn-template/branches [root@CentOS svn]# mkdir /tmp/svn-template/tags Bây giờ nhập các thư mục từ /tmp/svn-template tới repository. [root@CentOS svn]# svn import -m 'Create trunk, branches, tags directory structure' /tmp/svn- template/ Adding /tmp/svn-template/trunk Adding /tmp/svn-template/branches Adding /tmp/svn-template/tags Committed revision 1. [root@CentOS svn]# Nó đã được thực hiện. Chúng ta đã thành công tạo ra kho chứa và cho phép Tom và Jerry truy cập vào. Bắt đầu từ bây giờ, họ có thể thực hiện tất cả các hoạt động được hỗ trợ tới repository. Vòng đời trong SVN Vòng đời của hệ thống quản lý phiên bản được bàn luận trong chương này. Trong chương sau chúng ta sẽ quan sát lệnh của subversion cho mỗi tiến trình. Tạo repository trong SVN: Kho lưu là địa điểm trung tâm mà các nhà phát triển giữ tất cả những gì liên quan đến công việc của họ. Kho lưu khong chỉ giữ file mà còn lưu giữ cả lịch sử về các thay đổi. Điều này có nghĩa là nó duy trì một lịch sử của các sự thay đổi được thực hiện trong các file. Tiến trình create được sử dụng để tạo một repository mới. Hầu hết thời gian tiến trình này được thực hiện chỉ một lần. Khi bạn tạo một repository mới, VCS của bạn sẽ hi vọng bạn nói gì đó để nhận diện nó, như là nơi bạn muốn được tạo hoặc tên mà bạn muốn đặt cho repository. Tiến trình Checkout trong SVN Tiến trình checkout được sử dụng để tạo ra một bản sao làm việc từ repository. Bản sao làm việc là khu vực làm việc riêng nơi mà các nhà lập trình thực hiện những thay đổi của họ, và sau đó, đệ trình những thay đổi này tới repository. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 9
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Tiến trình Update trong SVN Như tên gọi đã đề cập, tiến trình update được sử dụng để cập nhật bản sao làm việc. Tiến trình này đồng bộ khu vực làm việc với repository. Khi repository được chia sẻ thì tất cả các thành viên trong team có thể commit những thay đổi của họ và bản sao làm việc trở lên cũ đi. Bây giờ chúng ta giả sử rằng Tom và Jerry là hai nhà lập trình làm việc trên một dự án. Cả hai kiểm tra phiên bản mới nhất từ repository và bắt đầu làm việc. Tại thời điểm này, bản sao công việc là đồng bộ hoàn toàn với repository. Jerry hoàn thành công việc của anh ta rất hiệu quả và commit những thay đổi anh ta thực hiện tới repository. Bây giờ khu vực làm việc của Tom chưa được cập nhật. Tiến trình update sẽ kéo những thay đổi mới nhất của Jerry từ repository và sẽ cập nhật khu vực làm việc của Tom. Thực hiện các thay đổi trong SVN Sau khi checkout, ai đó có thể thực hiện các tiến trình đa dạng để thực hiện các thay đổi. Chỉnh sửa là tiến trình thông thường nhất. Người nào đó có thể chỉnh sửa: thêm/gỡ bỏ nội dung file đang hiện hữu. Một ai đó có thể thêm các file/thư mục. Nhưng ngay lập tức những file/thư mục này không không trở thành một phần của repository, trừ khi chúng đã được thêm trong quá trình diễn ra liệt kê thay đổi và trở thành một phần của repository sau tiến trình commit. Tương tự, một ai đó có thể xóa file/thư mục. Tiến trình delete này ngay lập tức xóa file từ trong khu vực làm việc, nhưng sự xóa bỏ thực sự của file là được thêm vào trong quá trình diễn ra liệt kê thay đổi (pending change-list)và những thay đổi được hoàn thành tới repository sau tiến trình commit. Tiến trình rename thay đổi tên của file/thư mục. Tiến trình move được sử dụng để di chuyển file/thư mục từ một địa điểm tới địa điểm khác trong cây repository. Duyệt các thay đổi (review) trong SVN Khi bạn kiểm tra hoặc cập nhật khu vực làm việc, thì khi đó khu vực làm việc của bạn được hoàn toàn đồng bộ với repository. Nhưng khi bạn thực hiện các thay đổi tới khu vực làm việc, nó trở nên mới hơn repository. Và nó là thói quen tốt để Review - duyệt lại những thay đổi của bạn trước khi thực hiện tiến trình commit. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 10
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Tiến trình status trong SVN liệt kê các chỉnh sửa mà đã thực hiện tới khu vực làm việc. Như chúng ta đã đề cập trước đó, bất cứ khi nào bạn gây ra thay đổi trong khu vực làm việc, tất cả những thay đổi đó trở thành một phần của quá trình diễn ra liệt kê thay đổi. Và tiến trình Status được sử dụng để quan sát quá trình diễn ra liệt kê thay đổi này. Tiến trình status chỉ cung cấp một danh sách các thay đổi nhưng không đưa ra những chi tiết về chúng. Một ai đó có thể sử dụng tiến trình diff để quan sát các chi tiết này của sự chỉnh sửa mà đã được thực hiện tới khu vực làm việc. Sửa các lỗi trong SVN Chúng tôi giả sử rằng một ai đó đã gây ra các thay đổi tới khu vực làm việc của anh ta, nhưng bây giờ anh ta muốn dỡ bỏ các thay đổi này. Trong tình huống này, tiến trình revertsẽ giúp làm điều đó. Tiến trình revert trả lại các chỉnh sửa mà đã thực hiện tới khu vực làm việc. Nó là có thể để trả lại một hoặc nhiều file/thư mục. Nó cũng có thể trả lại toàn bộ khu vực làm việc. Trong trường hợp này, tiến trình revert sẽ phá hủy quá trình diễn ra liệt kê thay đổi và sẽ mang khu vực làm việc trở lại trạng thái ban đầu. Giải quyết các xung đột trong SVN: Các xung đột có thể xảy ra tại thời gian của việc sáp nhập. Tiến trình merge tự động thực hiện mọi thứ mà có thể thực hiện theo một cách an toàn. Mọi thứ khác được cân nhắc là sự xung đột. Ví dụ, tệp hello.c được chỉnh sửa trong một nhánh và bị xóa trong nhánh khác. Trong tình huống như vậy cần một người đưa ra quyết định. Tiến trình resolve được sử dụng để giúp người sử dụng tính toán các thứ và để thông báo cho VCS về cách giải quyết các xung đột. Ký thác các thay đổi (commit) trong SVN Tiến trình commit được sử dụng để áp dụng các thay đổi từ khu vực làm việc tới repository. Tiến trình này chỉnh sửa repository và các nhà lập trình khác có thể quan sát những thay đổi này bằng cách cập nhật khu vực làm việc. Trước khi commit, một ai đó phải thêm file/thư mục tới quá trình diễn ra liệt kê thay đổi. Đây là nơi mà những thay đổi chờ để được commit. Với commit, chúng ta thường cung cấp một thông báo log để giải thích tại sao ai đó gây ra các thay đổi. Thông báo log này trở thành một phần của lịch sử của repository. Ký thác là một tiến trình nguyên tử, mà có nghĩa là không thể chia tiến trình này http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 11
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com được. Hoặc là nó được thực hiện hoặc không. Bạn không thể thấy một tiến trình commit bỏ dở giữa chừng. Tiến trình Checkout trong SVN Subversion cung cấp lệnh checkout để tạo một bản sao thư mục làm việc từ một repository. Lệnh dưới đây sẽ tạo ra một thư mục mới trong thư mục làm việc hiện tại với tên là project_repo. Đừng lo lắng về địa chỉ URL repository, khi hầu hết thời gian, nó đã được cung cấp bởi người quản lý subversion với quyền truy cập thích đáng. [tom@CentOS ~]$ svn checkout http://svn.server.com../svn/project_repo --username=tom Lệnh trên sẽ tạo ra kết quả sau: A project_repo/trunk A project_repo/branches A project_repo/tags Checked out revision 1. Sau khi hoạt động checkout thành công, số hiệu phiên bản sẽ được in. Nếu bạn muốn quan sát nhiều thông tin hơn về repository, thì khi đó bạn thực hiện lệnh info. [tom@CentOS trunk]$ pwd /home/tom/project_repo/trunk [tom@CentOS trunk]$ svn info Lệnh trên sẽ tạo ra kết quả sau: Path: . URL: http://svn.server.com../svn/project_repo/trunk Repository Root: http://svn.server.com../svn/project_repo Repository UUID: 7ceef8cb-3799-40dd-a067-c216ec2e5247 Revision: 1 Node Kind: directory Schedule: normal Last Changed Author: jerry Last Changed Rev: 0 Last Changed Date: 2013-08-24 18:15:52 +0530 (Sat, 24 Aug 2013) http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 12
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com [tom@CentOS trunk]$ Thực hiện các thay đổi trong SVN Jerry kiểm tra phiên bản mới nhất của repository và bắt đầu làm việc trên dự án. Anh ta tạo một file array.c bên trong thư mục trunk. [jerry@CentOS ~]$ cd project_repo/trunk/ [jerry@CentOS trunk]$ cat array.c Lệnh trên sẽ tạo ra kết quả: #include #define MAX 16 int main(void) { int i, n, arr[MAX]; printf("Enter the total number of elements: "); scanf("%d", &n); printf("Enter the elements\n"); for (i = 0; i < n; ++i) scanf("%d", &arr[i]); printf("Array has following elements\n"); for (i = 0; i < n; ++i) printf("|%d| ", arr[i]); printf("\n"); return 0; } Anh ta muốn kiểm tra code của mình trước khi commit. [jerry@CentOS trunk]$ make array cc array.c -o array [jerry@CentOS trunk]$ ./array http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 13
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Enter the total number of elements: 5 Enter the elements 1 2 3 4 5 Array has following elements |1| |2| |3| |4| |5| Anh ta biên dịch và kiểm tra code của mình và mọi thứ đang làm việc như mong đợi, bây giờ nó là thời gian để commit thay đổi. [jerry@CentOS trunk]$ svn status ? array.c ? array Subversion đang chỉ dấu “?” trước tên file bởi vì nó không biết những gì đã làm với các file này. Trước khi commit, Jerry cần thêm file này tới quá trình diễn ra liệt kê thay đổi. [jerry@CentOS trunk]$ svn add array.c A array.c Hãy cùng chúng tôi kiểm tra nó với tiến trình status. Subversion chỉ A trước array.c, nó nghĩa là, file này đã được thêm thành công vào quá trình diễn ra liệt kê các thay đổi. [jerry@CentOS trunk]$ svn status ? array A array.c Để lưu giữ tệp array.c tới repository, sử dụng lệnh commit với tùy chọn -m theo sau bởi thông báo commit. Nếu bạn bỏ quên tùy chọn -m, subversion sẽ mang tới bộ soạn văn bản (text editor) mà tại đó bạn có thể gõ một thông báo nhiều dòng. [jerry@CentOS trunk]$ svn commit -m "Initial commit" Adding trunk/array.c Transmitting file data . Committed revision 2. Bây giờ tệp array.c đã được thêm thành công tới repository, và số phiên bản được đánh số thêm 1. http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 14
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Review các thay đổi trong SVN Jerry đã thêm tệp array.c tới repository. Tom cũng kiểm tra code mới nhất và bắt đầu làm việc. [tom@CentOS ~]$ svn co http://svn.server.com../svn/project_repo --username=tom Lệnh trên sẽ tạo ra kết quả sau: A project_repo/trunk A project_repo/trunk/array.c A project_repo/branches A project_repo/tags Checked out revision 2. Nhưng, anh ta tìm thấy rằng một ai đó đã thêm code. Vì thế anh ta tò mò về người đã làm điều đó và anh ta kiểm tra thông báo log để quan sát chi tiết hơn bằng cách sử dụng lệnh sau: [tom@CentOS trunk]$ svn log Lệnh trên sẽ tạo ra kết quả sau: ------------------------------------------------------------------------ r2 | jerry | 2013-08-17 20:40:43 +0530 (Sat, 17 Aug 2013) | 1 line Initial commit ------------------------------------------------------------------------ r1 | jerry | 2013-08-04 23:43:08 +0530 (Sun, 04 Aug 2013) | 1 line Create trunk, branches, tags directory structure ------------------------------------------------------------------------ Khi Tom theo dõi code của Jerry, anh ta lập tức chú ý đến một lỗi (bug) trong đó. Jerry không kiểm tra về tràn độ dài chuỗi của mảng, mà có thể gây ra các vấn đề nghiêm trọng. Vì thế Tom quyết định sửa lỗi này. Sau khi chỉnh sửa, array.c sẽ trông giống như sau: #include #define MAX 16 int main(void) http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 15
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com { int i, n, arr[MAX]; printf("Enter the total number of elements: "); scanf("%d", &n); /* handle array overflow condition */ if (n > MAX) { fprintf(stderr, "Number of elements must be less than %d\n", MAX); return 1; } printf("Enter the elements\n"); for (i = 0; i < n; ++i) scanf("%d", &arr[i]); printf("Array has following elements\n"); for (i = 0; i < n; ++i) printf("|%d| ", arr[i]); printf("\n"); return 0; } Tom muốn sử dụng hoạt động status để quan sát quá trình diễn ra liệt kê các thay đổi. [tom@CentOS trunk]$ svn status M array.c Tệp array.c đã được chỉnh sửa, đó là tại sao subversion chỉ ký tự M trước tên file. Tiếp đó Tom biên dịch và kiểm tra code của anh ta và nó đang làm việc tốt. Trước khi commit các thay đổi, anh ta muốn kiểm tra lần hai nó bằng cách duyệt lại các thay đổi mà anh ta đã thực hiện. [tom@CentOS trunk]$ svn diff http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 16
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com Index: array.c =================================================================== --- array.c (revision 2) +++ array.c (working copy) @@ -9,6 +9,11 @@ printf("Enter the total number of elements: "); scanf("%d", &n); + if (n > MAX) { + fprintf(stderr, "Number of elements must be less than %d\n", MAX); + return 1; + } + printf("Enter the elements\n"); for (i = 0; i < n; ++i) Tom đã thêm một vài dòng mới vào tệp array.c, đó là tại sao subversion chỉ ký hiệu + trước các dòng mới. Bây giờ anh ta đã sẵn sàng để commit các thay đổi của mình. [tom@CentOS trunk]$ svn commit -m "Fix array overflow problem" Lệnh trên sẽ tạo ra kết quả sau: Sending trunk/array.c Transmitting file data . Committed revision 3. Các thay đổi của Tom đã được commit thành công tới repository. Tiến trình Update trong SVN Jerry đã commit phiên bản đầu tiên của code. Nhưng anh ta nghĩ rằng anh ta nên viết hai chức năng để chấp nhận dữ liệu đầu vào và để hiển thị nội dung mảng. Sau khi chỉnh sửa,array.c trông giống như sau: #include #define MAX 16 void accept_input(int *arr, int n) { http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 17
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com int i; for (i = 0; i < n; ++i) scanf("%d", &arr[i]); } void display(int *arr, int n) { int i; for (i = 0; i < n; ++i) printf("|%d| ", arr[i]); printf("\n"); } int main(void) { int i, n, arr[MAX]; printf("Enter the total number of elements: "); scanf("%d", &n); printf("Enter the elements\n"); accept_input(arr, n); printf("Array has following elements\n"); display(arr, n); return 0; } Jerry biên dịch và kiểm tra code của mình và đã sẵn sàng để commit các thay đổi. Trước khi đó, anh ta muốn duyệt lại các thay đổi bằng cách sử dụng lệnh sau: [jerry@CentOS trunk]$ svn diff Lệnh trên sẽ tạo ra kết quả sau: Index: array.c =================================================================== --- array.c (revision 2) +++ array.c (working copy) @@ -2,6 +2,24 @@ http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 18
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com #define MAX 16 +void accept_input(int *arr, int n) +{ + int i; + + for (i = 0; i & n; ++i) + scanf("%d", &arr[i]); +} + +void display(int *arr, int n) +{ + int i; + + for (i = 0; i < n; ++i) + printf("|%d| ", arr[i]); + + printf("\n"); +} + int main(void) { int i, n, arr[MAX]; @@ -10,15 +28,10 @@ scanf("%d", &n); printf("Enter the elements\n"); + accept_input(arr, n); - for (i = 0; i < n; ++i) - scanf("%d", &arr[i]); - printf("Array has following elements\n"); - for (i = 0; i < n; ++i) - printf("|%d| ", arr[i]); - - printf("\n"); http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 19
- http://vietjack.com/svn/index.jsp Copyright © vietjack.com + display(arr, n); return 0; } Với các dòng mới, subversion chỉ dấu + trước các dòng và với các dòng bị dỡ bỏ nó chỉ dấu -. Bây giờ Jerry cố gắng để commit các thay đổi bằng cách sử dụng lệnh sau: [jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents" Lệnh trên sẽ tạo ra kết quả sau: Sending trunk/array.c svn: Commit failed (details follow): svn: File or directory 'array.c' is out of date; try updating svn: resource out of date; try updating Subversion không cho phép commit những thay đổi của Jerry, bởi vì Tom đã thay đổi repository và khu vực làm việc của Jerry bị lỗi thời. Để tránh việc viết đè lên các thay đổi lẫn nhau, Subversion quên hành động này. Jerry phải cập nhật khu vực làm việc trước khi commit các thay đổi của anh ta. Vì thế anh ta sử dụng lệnh update như dưới đây: [jerry@CentOS trunk]$ svn update G array.c Updated to revision 3. Subversion đang chỉ ký tự G trước tên file, nghĩa là file này đã được sáp nhập. [jerry@CentOS trunk]$ svn diff Lệnh trên sẽ tạo ra kết quả sau: Index: array.c =================================================================== --- array.c (revision 3) +++ array.c (working copy) @@ -2,6 +2,24 @@ #define MAX 16 http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 20
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn