Quản lý source code với TortoiseSVN, Visual SVN Server và Visual Studio
Trong các dự án lập trình thì việc quản lý Source Code (mã nguồn) là việc rất quan trọng, thao tác quản lý này giúp cho source code luôn được lưu trữ tại một nơi duy nhất, các sự kiện thêm mới hay chỉnh sửa của các thành viên trong đội dự án cũng sẽ được quản lý thông suốt và chính xác nhất, tránh việc trùng lặp hay xung đột về thông tin. Trong bài viết ngày hôm nay nguyenhuutrong.com sẽ giới thiệu tới các bạn cách quản lý source code trong dự án .NET với cac công cụ miễn phí là Visual SVN Server và TortoiseSVN, server SVN quản lý source code sẽ được đặt trên internet để tất cả các thành viên trong team ở mọi nơi đều có thể thực hiện các thao tác Check out & Update code thông qua kết nối internet.
Download & cài đặt các công cụ
Các công cụ cần thiết cho việc quản lý source code đều miễn phí và banj có thể download tại các link sau:
- Visual SVN Server: download tại đây, bạn sẽ thực hiện Remote Desktop vào SVN Server để download và cài đặt công cụ này.
- Tortoise SVN: download tại đây, công cụ này được cài đặt tại máy Client, bạn sẽ được yêu cầu khởi động lại máy sau khi quá trình cài đặt hoàn tất. TortoiseSVN cũng sẽ được tính hợp sẵn vào menu chuột phải trong Windows Explorer.
Vì là dự án .NET nên trên máy của bạn chắc hản đã có công cụ phát triển là Visual Studio (VS) cài đặt sẵn, bài viết này sử dụng phiên bản VS 2008 và bạn có thể áp dụng tương tự cho các phiên bản khác.
Sau khi download và cài đặt các công cụ của chúng ta sẽ có mô hình tích hợp như hình bên dưới.
Sau đây các bạn sẽ đi vào bước cấu hình chi tiết cho từng công cụ
Cấu hình Visual SVN Server
Sau khi cài đặt Visual SVN Server của bạn sẽ có giao diện như sau:
Tạo mới Repository
Thao tác đầu tiên là bạn click chọn Create New Repository… để tạo 1 repository mới trong dự án.
Bạn có thể đặt tên của repository trùng với tên của dự án.
Vì bạn sẽ thực hiện upload source code cho dự án tại máy client nên trên server bạn chỉ cần tạo một repository trống như hình dưới.
Tạo user và phân quyền truy cập
Bước tiếp theo bạn tạo các user và gán quyền để user có thể truy cập vào Repository ở trên. Để tạo quyền bạn chọn Create User…
Bạn tạo username/password cho user:
Để gán quyền truy cập cho user vào Repository vừa tạo bạn nhấn chọn Properties :
Sau đó chọn Add…
Bạn chọn user cần gán quyền (VD: trongnguyen) trong hộp thoạiChooser User or Group hiện ra
Bước tiếp theo bạn gán quyền cho user này, có các quyền: No Access (không truy cập được), Read Only (không được phép sửa dữ liệu ) và Read/Write (đầy đủ các quyền), trong hình minh họa dưới tôi thực hiện gán cho user trongnguyen đầy đủ các quyền
Số lượng user được tạo theo số lượng thành viên trong team, VD: tôi có 2 user là trongnguyen và steven như hình dưới.
Như vậy là bạn đa hoàn thành các bước cài đặt & cấu hình trên Visual SVN Server, bạn có thể chọn Copy URL và gửi đường link & thông tin truy cập (username/password) cho các thành viên trong team.
Vì SVN server đặt trên internet và để các thành viên có thể truy cập được bạn thay server name = static IP address, VD đường link của tối sẽ được thay từ:
https://alphasvr:8443/svn/docmgmt/
Thành https://50.56.242.177:8443/svn/docmgmt/
Với 8443 là cổng được thiết lập cùng với giao thức https trong lúc cài đặt
Cấu hình Tortoise SVN
Upload toàn bộ thư mục dự án lên SVN Server cho lần truy cập đầu tiên
Sau khi hoàn thành bước cài đặt và cấu hình Visual SVN Server cũng như tạo Repository và gán quyền cho các user bạn có thể thực hiện upload source code lên repository.
Trước tiên bạn truy cập vào thư mục dự án tại máy local, VD: của tôi là D:\Dev\docmgmt
Tại đây bạn click chuột phải và chọn Repo-browser trong menu hiện ra.
Bạn copy đường dấn tới SVN server vào ô URL và nhấn OK .
Lần đầu tiên thực hiện thao tác Repo-browser sẽ có 1 hộp thoại xác nhận quyền hiện ra như bên dưới.
Bạn nhấn chọn nút Accept permanently , sau đó nhập thông tin về username/password đã được cung cấp, nhấn Save authentication để lưu các thông tin cấu hình này và OK để tiếp tục.
Khung cửa sổ Repository Browser của TortoiseSVN hiện ra, bạn click chuột phải vào thư mục gốc và chọn thao tác Add folder để add folder từ máy client lên SVN Server
Bạn lần lượt thực hiện thao tác Add folder , Add file để đưa toàn bộ các folder, file trong thư mục gốc docmgmt từ Client lên server
Tới đây bạn đã hoàn thành bước upload source code lên SVN Server, bây giờ source code của bạn sẽ được quản lý tập trung trên SVN Server và các thành viên có thể cùng nhau làm việc trên SVN Server này thông qua kết nối Internet.
Thao tác Checkout code – Download toàn bộ source code về máy client
Ở bước trên tôi đã dùng user trongnguyen để upload toàn bộ source code của dự án lên SVN Server, thao tác này sẽ được thực hiện 1 lần duy nhất khi khởi tạo dự án và thông thường sẽ do một người thực hiện. Sau kho source code đã được upload lên SVN các user khác có thể truy cập và checkout source code về, VD: với user steven sẽ thực hiện
Bạn xác định 1 thư mục trên Windows Explorer sẽ dùng để chứa source code của dự án, VD: E:\Steven\Dev . Sau đó bạn truy cập vào thư mục này, click chuột phải và chọn SVN Checkout.
Bạn paste đường link tới SVN server vào ô URL of repository sau đó nhấn OK . TortoiseSVN sẽ tạo 1 thư mục như trên repository ở máy của bạn (VD: docmgmt)
Bạn tiếp tục nhấn nút Accept permanently và nhập thông tin user vào
Quá trình checkout source code từ server về hoàn tất bạn sẽ nhận thấy các folder, file trong thư mục này sẽ có biểu tượng của SVN như hình dưới.
Các thao tác với VS 2008
Thao tác Commit code – Cập nhật thay đổi lên Repository
Mỗi khi bạn thực hiện thay đổi nội dung gì đó trong VS 2008 thì sẽ có biểu tượng thay đổi tại thư mục dự án
Bạn có thể thêm các thông tin Comment khi Commit code và nhấn OK để tiếp tục.
Bạn thực hiện Update code – Get nội dung mới từ Repository về máy local
Trước khi tiến hành sửa một file source code trong dự án, bạn sẽ thực hiện thao tác lấy nội dung file mới nhất từ Repository để tránh trường hợp bạn cập nhật đè (overwrite) lên nội dung của các thành viên khác. Trước khi lấy một file về bạn có thể click chuột phải vào file đó và dùng tính năng so sánh – Diff with previous version , nếu nội dung file trên SVN server khác với trên máy local của bạn thì bạn sẽ thực hiện lấy nội dung file về.
Nội dung hai file có sự khác biệt.
Dùng tính năng SVN Update để get code từ SVN Server về máy local (client):
Tổng kết
Trên đây tô đã giới thiệu tới các bạn một giải pháp quản lý source code cho các dự án .NET sử dụng các công cụ Visual SVN Server, TortoiseSVN và Visual Studio 2008, hy vọng các công cụ này sẽ giúp các thông tin về source code trong dự án .NET của bạn được quản lý thông suốt và dễ dàng hơn.

port says:
hay lắm, có công cụ nào hay post tiếp nha
trongnguyen says:
Cảm ơn bạn đã động viên, nếu có thêm các thông tin thú vị mình sẽ post tiếp để được chia sẻ cùng mọi người, cheers
Man EnVy says:
Đọc cho biết chứ không có “cơ hội” để sử dụng, bên FB có nhóm Blogger Vietnam, Trọng tham gia cho vui, mình nghĩ rất nhiều anh em cần đến những chia sẻ của Trọng.
trongnguyen says:
Cảm ơn lời động viên của Mẫn, hiện thì mình đang tập trung cho mảng WordPress nên chắc sẽ chỉ đặt gạch ở đó thôi, cảm ơn Mẫn nhiều
Hùng says:
Hi anh,
Cho em hỏi 1 chút ở bước Auto Commit lên SVN server, mình phải cài 1 tool dạng như SVN Auto Commit & setup thời gian thực hiện autocommit lên svn server đúng không anh.
Cảm ơn anh.
Hùng says:
trường hợp của em đã dựng xong svn server & client và đang thực hiện backup lên svn server bằng tay. Em nghe nói có cách để svn server có thể auto commit bằng soft hoặc bằng script mà chưa biết xử lý ra sao.
Mong anh cho ý kiến. Cảm ơn anh.
trongnguyen says:
Em có thể chọn Commit code cho cả 1 thư mục, khi đó SVN tự động kiểm tra các file trong thư mục đó với code trên server và chỉ thực hiện commit những file nào có chỉnh sửa tại local (khác phiên bản với server) thôi. Anh không dùng soft hoặc script vì mỗi khi commit code thì cần phải comment theo từng ngữ cảnh cụ thể nữa em ah.
Nghi says:
Trọng có sử dụng SVN này để quản lý source code của WordPress chưa? mình định dùng SVN này để quản lý source code WordPress nhưng chưa biết có vướng gì không.
trongnguyen says:
WordPress thì mình thường code trên local sau đó dùng cute FTP để up trực tiếp lên host, khi đã có phiên bản chạy trên host rồi thì lại dùng cuteFTP mỗi khi cần chỉnh sửa gì đó (nhiều nhất vẫn là CSS – trong file style.css) vậy nên mình không dùng SVN với các trang WP của mình.
Nhưng Nghi sử dụng SVN với WordPress là hoàn toàn tốt bạn ah.
Trung Nguyen says:
SVN có kiểm tra được những user đã checkout dự án ko bạn. Vì mình làm việc với team lớn. Lắm khi mail cho mọi người rồi mà ko biết họ check out chưa? Cứ phải hỏi: ” Đã checkout chưa?”. Bực mình lắm.