Bài hướng dẫn chi tiết về svn

Hệ thống SVN (subversion.tigris/) là một hệ thống quản lý phần tài nguyên của một dự án. Hệ thống có khả năng tự cập nhật, so sánh và kết hợp tài nguyên mới vào phần tài nguyên cũ.

Bắt đầu từ trang 2 là hướng dẫn sử dụng các chức năng cơ bản của phần mềm TortoiseSVN (tortoisesvn/) là client tốt nhất của hệ thống SVN.

Các chức năng mà các bạn cần quan tâm nhất là chức năng Commit – để đưa các dữ liệu của các bạn lên thư mục dự án (chú ý là mỗi lần các bạn đưa lên thì sẽ là một phiên bản (revision) của dự án nên các bạn chỉ nên đưa lên server một khi đã hoàn thành cơ bản chạy được một tính năng nào đó không có lỗi để tránh trường hợp có người khác update về chạy bị lỗi ở phần của các bạn mà chương trình không chịu chạy, như vậy rất nguy hiểm). Và tính năng thứ 2, là update, để cập nhập tài nguyên của dự án, phần mềm sử tự so sánh mã nguồn từ server và của các bạn và tìm ra chỗ nào khác sẽ tự động nối (merge) vào mã nguồn của các bạn đảm bảo không bị lỗi). Các bạn mỗi khi commit khuyến khích nên update xong rồi hãy update để tránh tình trạng bị lỗi.

Hướng dẫn ở dưới chỉ có hướng dẫn vài tính năng cơ bản, các bạn nên đọc thêm phần hướng dẫn của tortoiseSVN để biết thêm nhiều tính năng rất mạnh của nó hoặc khi có vấn đề gì về lỗi conflic có thể mail về cho trưởng nhóm để nhận được hướng dẫn.

Tùy theo tình hình của mỗi dự án mà nhóm quản lý sẽ cấp user để các bạn tham gia dự án. Các bạn sẽ nhận được username và password và url đường dẫn đến thư mục của dự án trên mạng.

Hướng dẫn sử dụng Subversioning (SVN) dựa trên TortoiseSVN client.

Mục tiêu chính của SVN :

Quản lý các phiên bản của một file nào đó (bất kỳ là file text, binary,...) vào server SVN. Quá trình kiểm tra sẽ được SVN sẽ kiểm tra tại 2 nơi

  1. Thư mục dự án (Nơi thực hiện dự án).
  2. Thông tin dự án được lưu trữ trên server.

khi kiểm tra file hiện hành có sự thay đổi so với trên server SVN là SVN sẽ tạo một phiên bản mới lưu lại(khi người dùng update -> commit). Việc quản lý phiên bản sẽ giúp việc phục hồi lại các version trước đó dể dàng mà không cần phải lưu backup tùm lum mà không biết cái nào trước cái nào sau ... Khi lưu từng phiên bản sẽ cho phép lưu kèm theo các thông tin liên quan như .. là người thay đổi , thay đổi chổ nào, thay đổi cái gì ... giúp cho việc quản lý source nguồn một các rõ ràng. Việc lưu trử version SVN sự dụng các thuật toán so sánh và chỉ lưu trữ các thành phần khác nhau của mỗi verision nên dung lượng lưu trữ sẽ được tối ưu so với việc backup từng file.

Các quy định khi làm việc với SVN:

  • Khi thực hiện mới dự án : Nếu là một dự án mới thì quá trình thực hiện dự án như thường lệ, sau đó "Import" dự án vào SVN. Cách thực hiện như sau : right click trên thư mục dự án chọn TortoiseSVN → Import...
  • Khi thực hiện upgrade từ một dự án có sẳn trong SVN : Nếu phải thực hiện lại một dự án có sẵn thì phải "checkout" dự án đó từ SVN về thư mục thực hiện dự án. để SVN khởi tạo các thông tin quản lý source nguồn trên thư mục làm việc của dự án.

Cách thực hiện như sau : Right click trên thư mục (rỗng) , nơi dự định để thực hiện dự án TortoiseSVN → Checkout...

Một số thao tác cơ bản với SVN:

Đưa một project vào SVN server Mở windows explorer lên, chọn thư mục của dự án thực hiện "right click" và chọn TortoiseSVN → Import... Các bước như sau :

Bước 1: Chọn chức năng import

Lấy một project từ SVN

Khi cần lấy các source code từ server SVN thì thực hiện các bước như sau :

Mở windows explorer lên, chọn (hoặc tạo mới) một thư mục để chưa các source code của dự án (có thể là thư mục của webserver)

@chú ý : thư mục phải rỗng.

Bước 1 : chọn thư mục chứa dự án

Bước 2 : chọn thông tin dự án trên server

Bước 3 : Ngồi đợi và .. thế là xong , bạn đã có các thông tin của dự án trên máy của mình

Kiểm tra các file bị thay đổi với server SVN

Kiểm tra sự thay đổi của source nguồn

Nếu chưa có bất kỳ sự thay đổi nào thì icon của thư mục dự án như sau

Thông tin thay đổi

Right click ... tìm chức năng "Compare with base"

Tìm xem thử coi chi tiết là nó thay đổi cái gì?

Ok...à ngồi đợi ....... thế là xong ..á đơn giản

Sau khi commit các thông tin giữa clien và version mới nhất tại server hoàn toàn giống nhau thì icon của thư mục thư mục .ở về như cũ.

Đưa file mới vào SVN

Nếu trong quá trình phát triển dự án cần thêmmột số file vào dự án .... thì sau khi thêm vào các bạn chọn chức năng "add" để đưa các file này vào SVN

Kỳ này có tham gia tại trường học phần Công cụ và môi trường Phát triển phần mềm, trong đó có giới thiệu với các bạn công cụ quản lý mã nguồn Subversion.

Rằng thì là chẳng bao giờ dùng SVN nên nhiều khi demo cứ hay quên mấy cái 1 trừ hay 2 trừ. Viết cái chủ đề này phần để cho các bạn tham khảo phần để tra cứu lại khi cần thiết.

2. Giới thiệu về Subversion

Anh em chịu khó wiki hay nhờ “anh hai google” cho nó rõ nghĩa nhé. Mình chỉ đại khái thôi.

Subversion là một phần mềm cung cấp các chức năng quản lý phiên bản mã nguồn và tài liệu. Hiểu đơn giản nó cũng chỉ là một trình quản lý file, thư mục. Tuy nhiên, nó cao cấp hơn ở chỗ nó cho phép quản lý nhiều phiên bản của cùng 1 file, có thể rollback lại khi có sai sót; quản lý lịch sử sửa đổi; quản lý người dùng . Hỗ trợ giải quyết đụng độ, tranh chấp … và nhiều thứ mà nói thật mình cũng chưa tìm hiểu hết.

Tóm lại, anh em cứ google là ra hết hoặc là vào trang chủ của nó mà nghiên cứu http://subverion.tigris.org

3. Cài đặt SVN

B1. Download và cài đặt.

Download SVN tại: http://subverion.tigris.org (đừng có nói là vào đó xong hổng biết download ở đâu nhé :), còn nếu không biết thật thì vào đây http://sourceforge.net/projects/win32svn/). Sau khi download về máy ta được file svn-win32-3.5.6.zip (phiên bản có thể khác, nhưng cách cài thì như nhau).

Có thể dùng VisualSVN cũng được, nhưng để hiểu rõ hơn bản chất của nó mình sẽ giới thiệu về svn-win32 và quản lý nó bằng Command-line và text file.

Giải nén svn-win32-3.5.6.zip vào đâu đó (trong ví dụ này mình giải nén vào ổ C), được thư mục C:\svn-win32-3.5.6\ (xem hình)

Bài hướng dẫn chi tiết về svn

B2. Thiết lập biến môi trường

Mục đích của việc thiết lập biến môi trường là để trên cửa sổ command có thể truy xuất trực tiếp tới các thư viện của svn mà không cần phải gõ đường dẫn.

Thêm các biến môi trường như sau:

+ Right-click lên My Computer, chọn Properties. + Trong màn hình System Properties chọn tab Advanced. + Trong tab Advanced Click vào nút lệnh Environtment Variables. + Tại cửa sổ Environtment Variables có 2 phần (user variables và system variables). + Trong phần system variables, tìm đến dòng có tên Variable là “Path”, chọn dòng đó và nhấn nút edit. (ở đây bạn có thể thêm vào user variable hoặc system variable đều được). + Sau khi nhấn nút Edit, trong màn hình Edit system variable, tại ô Variable value, bạn đưa con trỏ tới cuối ô; trong trường hợp cuối ô chưa có dấu “;” thì bạn thêm dấu “;” vào, sau đó thêm đường dẫn tới thư mục Bin của svn (thêm C:\svn-win32-1.5.6\bin). Đây là thư mục chứa các tập tin exe của svn. + Tiếp theo các bạn thêm biến SVN_EDITOR bằng cách tại vùng User variables hoặc System variables trên của sổ Environment variables, nhấn nút New + Trong cửa sổ New variable, thêm như hình sau, sau đó nhấn nút OK.

Bài hướng dẫn chi tiết về svn

4. Tạo kho lưu trữ tài liệu, mã nguồn (Repository)

Kho lưu trữ tài liệu, mã nguồn (Repository) là thư mục chứa dữ liệu về dự án của bạn và các cấu hình truy cập các dữ liệu đó.

Để tại kho lưu dữ liệu, bạn sử dụng svnadmin, trong cửa sổ cmd của window, gõ lệnh sau:

svnadmin create <đường dẫn kho lưu>

Ví dụ:

svnadmin create C:\ARDRepository\

Sau khi thực hiện xong, SVN sẽ tạo ra trong ổ đĩa của bạn thư mục kho lưu (thư mục chứa dữ liệu các phiên bản tài liệu, mã nguồn, các cấu hình truy cập kho). Bên trong thư mục kho lưu, SVN đã tạo sẳn ra một số thư mục. Là người quản trị, bạn quan tâm đến thư mục Conf.

Bài hướng dẫn chi tiết về svn
5. Cấu hình đơn giản trong Repository

Trong phạm vi bài này, tôi chỉ giới thiệu các bạn tạo user và phân quyền đơn giản cho repository. (Bài sau sẽ giới thiệu chi tiết hơn về Authentication trong SVN)

Như phần trên tôi đã nói, các bạn quan tâm đến thư mục conf. Trong thư mục conf, SVN đã tạo sẵn cho các bạn 3 file: svnserve.conf, passwd, authz.

Điều đầu tiên các bạn làm là chỉnh sửa file svnserve.conf

Các bạn có thể đọc hoặc xóa trắng file svnserve.conf đi và cấu hình lại từ đầu (vì thực chất nó cũng đơn giản – có mấy dòng thôi).

Trong phạm vi bài này, bạn chỉ quan tâm đến 4 dòng sau:

[general] anon-access = read auth-access = write password-db = passwd

[general]: đánh dấu bắt đầu session

anon-access: Cấu hình truy cập khi truy cập vào repository lưu không xác thực (không thông qua đăng nhập username, password). Có các giá trị hiệu lực tăng dần: none, read, write (chắc ko cần nói ý nghĩa của các giá trị này nhỉ 🙂 )

auth-access: Cấu hình khi truy cập vào repository có xác thực (đăng nhập bằng username, password). Các giá trị tương tự như trên

password-db: Tên file chứa thông tin username và password truy cập vào kho lưu. Trong trường hợp trên là file passwd (đã được svn tạo sẵn).

Bạn có thể xóa trắng file svnserve.conf và copy 4 dòng trên paste vào là ok.

Việc tiếp theo bạn làm là tạo ra một vài user truy cập vào repository.

Để tạo user truy cập vào repository, bạn mở file passwd đã có sẵn trong thư mục conf (mở bằng trình soạn thảo văn bản) và xóa trắng đi, gõ lại từ đầu (cho nó chuyên nghiệp 🙂 )

Tạo một vài user (trong ví dụ sau tôi sẽ tạo user admin mật khẩu là nimda, user1 mật khẩu 1resu, user2 có mật khẩu 2resu

[users] admin = nimda user1 = 1resu user2 = 2resu

Bắt đầu bằng dòng báo hiệu session cấu hình User [users], mỗi dòng tiếp theo sẽ là username và password của mỗi user. Cấu trúc Username = password

Phù, như thế là xong phần cấu hình đơn giản.

Hãy test lại xem cấu hình của bạn có OK hay không, hãy mở cmd lên, gõ lệnh sau vào để chạy service của SVN.

svnserve –d –r C:\ARDRepository

Enter, nếu không có báo gì thì là OK (đừng hụt hẫng nhé, tưởng không báo gì lại tưởng cấu hình sai)

6. Tạo dự án để lưu trữ trong Repository

Giữ nguyên cửa sổ cmd đang chạy service SVN ở trên (đừng tắt đi nhé) và mở một cửa sổ CMD khác để thao tác với các lệnh của giao thức SVN.

Mở 1 cửa sở cmd khác, gõ lệnh sau để tạo mới 1 Project lưu trong ARDRepository.

svn mkdir svn://localhost/<tên dự án> –m “<Mô tả thông tin về dự án>” ––username <tên user> ––password <password>

Ví dụ:

svn mkdir svn://localhost/AS –m “Asia Standard” ––username admin ––password nimda

Khi đó, nếu thành công bạn sẽ nhận được:

Committed revision 1.

Có thể không cần sử dụng tham số password

svn mkdir svn://localhost/AP –m “Asia Professional” ––username admin

Khi đó, sau khi enter, SVN yêu cầu bạn phải nhập password cho admin, bạn nhập mật khẩu xong, nếu thành công nó cũng sẽ báo commited.

C:\Documents and Settings\Chungtv>svn mkdir svn://localhost/AP –m “Asia Professional” ––username admin Authentication realm: <svn://localhost:3690> 58a7a8ca-296d-2d48-a4a5-f5420ae2ca80 Password for ‘admin’: *****

Committed revision 2.

Kiểm tra lại danh sách dự án bạn mới tạo bằng lệnh list (hoặc ls) của SVN.

svn ls svn://localhost

6. Tạo service trong window để chạy svn service

Bước tiếp theo, các bạn tạo 1 service để chạy svn service cho repository bạn đã tạo.

Tại sao phải tạo service? ở bước trên, các bạn để ý là muốn sử dụng được các lệnh của giao thức SVN (mkdir, list …) thì không được tắt cửa sổ cmd đang chạy lệnh svnserve –d –r C:\ARDRepository

Như vậy là mỗi khi khởi động lại máy chủ, muốn cho các máy trạm có thể truy cập vào repository của bạn thì bạn phải lên server và chạy lệnh đó để start service svn (bất tiện quá đúng không). Bước này, bạn sẽ tạo 1 service khởi động cùng window.

Bạn tắt của sổ cmd đang chạy service SVN đi để tiếp tục.

Để tạo service, bạn sử dụng lệnh SC (chú ý là bạn phải có quyền admin trên máy này nhé, nhất là các bạn đang dùng win7, hãy righ-click vào cmd.exe và Run as Administrator trước khi tiếp tục).

Trong cửa sổ cmd, bạn gõ lệnh sau để tạo service.

sc create <ARDSVN> binpath= “c:\svn-win32-3.5.6\bin\svnserve.exe ––service –r C:\ARDRepository” displayname= “ARD SVN Server” depend= TCPIP start= auto + ARDSVN: Tên của service. + binpath= “…”: Đường dẫn thực thi service và chỉ định các tham số (chú ý là sau dấu = có khoảng trắng còn trước nó thì không nhé) + displayname= “…”: Tên của service sẽ hiện thị trong Services Management (cũng chú ý khoảng trắng sau dấu ‘=). + depend = TCPIP: Danh sách các service Dependencies, cần thiết để sử dụng service svn (trong trường hợp này cần phải có service TCPIP)| + start= auto: Xác định service này sẽ tự động chạy khi khởi động window.

OK, nếu không có gì sai sót thì sau khi ENTER, bạn sẽ nhận được thông báo:

[SC] CreateService SUCCESS

Tạo xong chưa chắt đã chạy được (vì thế thể cấu trúc trong binpath của bạn sau – thiếu dấu “-“ trước service chẳng hạn)