Lập trình Java theo nhóm sử dụng Eclipse và SVN
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Giới thiệu

Tài liệu hướng dẫn dựa trên:
  • Eclipse 4.4 (LUNA)

2- Các cài đặt đòi hỏi

Đây là mô hình làm việc theo nhóm Java sử dụng Eclipse và SVN:

VisualSVN Server

Để có SVN Repository bạn cần phải cài đặt SVN Server chẳng hạn Visual SVN trên một máy tính nào đó, nó sẽ là một máy chủ SVN. Bạn có thể xem hướng dẫn cài đặt và cấu hình Visual SVN tại:

XP-Dev

Trong trường hợp bạn không có SVN Server. Bạn có thể đăng ký một tài khoản XP-DEV để có một SVN Repository miễn phí với dung lượng lên tới 1.5G đủ để dùng cho nhóm làm việc. Xem hướng dẫn đăng ký & sử dụng XP-DEV tại:

Subversive

Tiếp theo trên mỗi chương trình Eclipse của mỗi thành viên phải cài đặt Subversive. Bạn có thể xem hướng dẫn tại:

3- Chia sẻ Project lên SVN Repository

Trước hết cần một thành viên trong nhóm chia sẻ code dự án ban đầu lên SVN Repository (Kho chứa SVN).
Hình minh họa dưới đây minh họa 3 project có trên máy tính của một thành viên trong nhóm. Chúng ta sẽ chia sẻ 3 project này lên SVN Server.
Trên Visual SVN đã tạo sẵn một Repository có tên JavaProjects.
Copy URL:
URL Copy được có thể chứa tên của máy chủ SVN.
  • https://TRAN-VMWARE/svn/JavaProjects/
Bạn có thể thay đổi tên máy chủ bằng địa chỉ IP.

Nếu bạn sử dụng XP-DEV và tạo một SVN Repository, bạn cũng sẽ có URL tương ứng, hãy sử dụng URL này.

Quay trở lại với Eclipse.
Chúng ta sẽ chia sẻ 2 Project: ProjectController & ProjectModel lên Repository JavaProjects:
2 Project: ProjectController & ProjectModel đã được chia sẻ lên SVN Server.
Trong một thời điểm nào đó bạn muốn chia sẻ tiếp Project khác cũng lên trên Repository có sẵn (Chẳng hạn JavaProjects). Chúng ta tiếp tục chia sẻ Project ProjectView lên SVN Repository JavaProjects
Project ProjectView đã được chia sẻ lên Repository.
Đây là hình ảnh nhìn trên Visual SVN Server:

4- Checkout Project từ SVN Repository

Các thành viên khác trong nhóm sẽ checkout các Project từ trên Repository về máy tính của mình.
Giả sử rằng chúng ta chỉ lấy 2 Project, Project còn lại sẽ lấy về sau.
2 Project đã được checkout.
Chúng ta tiếp tục checkout Project khác (Chẳng hạn như nó mới được chia sẻ bởi một người nào đó trong nhóm).

5- Commit và Update

Checkout là hành động lấy toàn bộ dữ liệu 1 hoặc nhiều Project được chia sẻ trên Repository xuống máy địa phương (Khi máy địa phương chưa có Project đó). Sau đó dữ liệu được sửa đổi tại địa phương. Sử dụng chức năng Commit để dữ liệu đã thay đổi lên Repository. Và sử dụng chức năng Update để lấy dữ liệu có thay đổi về.
Bây giờ chúng ta sẽ sửa (hoặc thêm) file trên các Project, và Commit lên Repository.
Để đưa các dữ liệu đã thay đổi lên SVN Repository. Nhấn phải chuột vào Project hoặc chọn file đã thay đổi, chọn Team/Commit.
Tất cả các thêm mới và thay đổi đã được Commit lên SVN Repository.
Tại Eclipse của các thành viên khác có thể sử dụng chức năng Update để cập nhập các dữ liệu thêm mới hoặc thay đổi.

Chú ý: Trong một số trường hợp việc Commit bị báo lỗi, bạn cần phải Update trước khi Commit.

6- Các chức năng cơ bản

SVN có nhiều chức năng, được minh họa như hình dưới đây:
Chúng ta sẽ tìm hiểu cách sử dụng của một vài chức năng quan trọng.

6.1- Add to svn:ignore

Trường hợp bạn có một thư mục hoặc file muốn SVN bỏ qua, không đưa lên SVN Repository. Bạn có thể sử dụng chức năng: Add to svn:ignore
Chẳng hạn bạn có một thư mục chứa các file dữ liệu không muốn chia sẻ lên như hình minh họa dưới đây:
Nhấn phải chuột vào thư mục mynote, chọn Team/Add to svn:ignore
Nếu việc Commit Project bị lỗi như hình minh họa dưới đây:
Trong trường hợp này bạn cần phải Update project trước khi Commit.

6.2- Revert

Revert sử dụng để trả lại dữ liệu ban đầu. Chẳng hạn khi bạn sửa đổi dữ liệu của một vài file, revert giúp cho file trở lại như trước khi thay đổi.

6.3- Lock & Unlock

Bạn đang sửa một vài file tại máy địa phương. Và trong quá trình sửa bạn không muốn một người nào đó trong nhóm Commit dữ liệu các file đó lên Repository, bạn có thể sử dụng chức năng Lock để khóa lại. Sau khi sửa đổi xong, bạn có thể Commit và sử dụng chức năng Unlock để mở khóa.

6.4- Cleanup

Bạn sửa đổi một vài file và Commit lên SVN Repository. Nhưng nhận được thông báo lỗi khi một trong những file đó đang bị Lock bởi một ai đó. Cleanup cho phép giải phóng việc khóa một cách ép buộc. Bạn không thể sử dụng chức năng Unlock trong trường hợp này, vì nó chỉ sử dụng cho người đã Lock file.

6.5- Disconnect

Project của bạn đang kết nối với SVN Repository.
Nếu xem trên thư mục Project tại ổ cứng, bạn sẽ thấy tại mỗi thư mục có một thư mục ẩn .svn, đó là các thư mục chứa thông tin tình trạng và dữ liệu các file của SVN (Nó giống kiểu một kho chứa địa phương).
Nhấn phải chuột vào một Project và chọn Team/Disconnect sẽ giúp ngắt kết nối với SVN Repository.
Việc Disconnect có 2 lựa chọn:
  1. Vừa disconnect vừa xóa hết các SVN meta-information
    • Lựa chọn này sẽ làm xóa hết các thư mục ẩn .svn trên tất cả các thư mục trong Project, trường hợp này không thể kết nối lại, nếu muốn kết nối lại chỉ có cách xóa Project trên ổ cứng và  Checkout lại.
  2. Hoặc chỉ disconnect.
    • Lựa chọn này đơn giản chỉ là ngắt kết nối. Các SVN meta-information vẫn được giữ lại.
Dưới đây tôi minh họa sử dụng lựa chọn 2:
You can reconnect, right-click on the selected Project, select: Team/Share Project...