This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

Đưa Dữ Liệu Vào Trong Kho Lưu Trữ Của Bạn

Bạn có thể đưa tập tin mới vào trong kho lưu trữ của bạn theo hai cách: svn importsvn add. Chúng ta sẽ thảo luận bây giờ svn import và sẽ thảo luận svn add sau trong chương này khi chúng ta xem lại một ngày tiêu biểu với Subversion.

Nhập tập tin và thư mục

Lệnh svn import là một cách để sao chép nhanh một cây chưa đánh phiên bản của những tập tin, tạo nên những thư mục trung gian cần thiết. Lệnh svn import không đòi hỏi phải có bản sao làm việc và những tập tin của bạn được chuyển giao ngay tức thì vào trong kho lưu trữ. Thông thường bạn hay sử dụng lệnh này khi bạn đã có sẵn một cây của những tập tin mà bạn muốn bắt đầu theo dõi trong kho lưu trữ của bạn. Ví dụ:

$ svn import /path/to/mytree \
             http://svn.example.com/svn/repo/some/project \
             -m "Initial import"
Adding         mytree/foo.c
Adding         mytree/bar.c
Adding         mytree/subdir
Adding         mytree/subdir/quux.h

Committed revision 1.
$

Ví dụ trên sao chép nội dung của thư mục cục bộ mytree vào trong thư mục some/project trên kho lưu trữ. Nhớ rằng bạn không cần phải tạo thư mục này trước—lệnh svn import thực hiện việc đó cho bạn. Ngay sau quá trình chuyển giao, bạn có thể thấy dữ liệu của bạn trong kho lưu trữ:

$ svn list http://svn.example.com/svn/repo/some/project
bar.c
foo.c
subdir/
$

Lưu ý rằng sau khi quá trình nhập kết thúc, thư mục cục bộ ban đầu không được chuyển thành bản sao làm việc. Để bắt đầu làm việc với dữ liệu đó theo dạng đã đánh phiên bản, bạn cần phải tạo một bản sao làm việc mới cho cây đó.

Khuyến nghị cách bố trí kho lưu trữ

Subversion rất linh hoạt trong việc cung cấp những cách bạn sắp xếp dữ liệu. Bởi vì nó chỉ đơn giản là các phiên bản thư mục và tập tin, và bởi vì nó không gán một ý nghĩa đặc biệt nào vào những đối tượng này, bạn có thể sắp xếp dữ liệu trong kho lưu trữ của bạn theo bất kỳ cách nào bạn chọn. Không may, tính linh hoạt này cũng có nghĩa là bạn sẽ hay gặp phải tình huống lạc đường mà không có bản đồ khi bạn duyệt thông tin những kho lưu trữ khác nhau với mỗi kho có bộ dữ liệu hoàn toàn khác nhau và được sắp xếp theo một cách không biết trước được.

Để hạn chế sự nhầm lẫn này, chúng tôi khuyến nghị bạn nên theo cách bố trí kho lưu trữ quy ước (đã được thiết lập từ lâu, từ lúc khởi đầu của dự án Subversion) mà một số ít những thư mục kho lưu trữ Subversion được đặt tên theo cách có thể chuyển tải được thông tin có giá trị về dữ liệu mà chúng đang lưu trữ. Đa số các dự án chứa phần chính dễ nhận biết của quá trình phát triển, thân (trunk); một vài nhánh (branches), là những bản sao khác nhau của dự án; và vài thẻ (tags), mà được đặt tên, chứa những bản sao lưu của một nhánh cụ thể đã ổn định. Vì vậy trước tiên chúng tôi đề nghị rằng mỗi dự án nên có một gốc dự án trong kho lưu trữ, là thư mục mà trong đó tất cả những thông tin phiên bản của dự án được chứa—và chỉ dự án này—. Thứ hai, chúng tôi đề nghị mỗi gốc dự án chứa một thư mục con trunk dành cho nhánh phát triển chính, một thư mục con branches chứa những nhánh cụ thể (hoặc những tập các nhánh) mà sẽ được tạo, và một thư mục con tags chứa những thẻ cụ thể (hoặc những tập các thẻ) mà sẽ được tạo. Dĩ nhiên nếu kho lưu trữ chỉ chứa một dự án đơn thì gốc của kho cũng có thể coi như là gốc của dự án.

Dưới đây là một vài ví dụ:

$ svn list file:///var/svn/single-project-repo
trunk/
branches/
tags/
$ svn list file:///var/svn/multi-project-repo
project-A/
project-B/
$ svn list file:///var/svn/multi-project-repo/project-A
trunk/
branches/
tags/
$

Chúng tôi đề cập rất nhiều về thẻ và nhánh ở tại Chapter 4, Branching and Merging. Để xem thông tin chi tiết về việc làm cách nào thiết lập những kho lưu trữ khi bạn có nhiều dự án, xem ở the section called “Repository Layout”. Cuối cùng, chúng tôi thảo luận chi tiết về gốc dự án trong the section called “Planning Your Repository Organization”.

Tên gọi nói lên điều gì?

Subversion không giới hạn loại dữ liệu mà bạn có thể đưa vào kiểm soát phiên bản. Nội dung của các tập tin và những giá trị thuộc tính được lưu trữ và truyền theo dạng dữ liệu nhị phân, và the section called “File Content Type” cho bạn biết làm cách nào để thông báo cho Subversion những thao tác văn bản là không phù hợp cho một loại tập tin cụ thể. Tuy nhiên, có một vài nơi mà Subversion thiết lập giới hạn về thông tin mà nó lưu trữ.

Subversion về mặt nội bộ xử lý những bit dữ liệu nhất định—ví dụ, tên thuộc tính, đường dẫn và thông báo nhật ký—theo định dạng Unicode UTF-8. Tuy nhiên, đây không phải là khẳng định rằng tất cả các tương tác của bạn với Subversion phải liên quan đến TF-8. Như một quy tắc chung, ứng dụng khách Subversion sẽ xử lý việc chuyển đổi giữa UTF-8 và hệ thống mã hóa đang được sử dụng trong máy tính của bạn một cách nhẹ nhàng và hoàn toàn ẩn bên dưới nếu cần thiết (đây là cách mà đa số những hệ thống mã hóa hiện nay sử dụng).

Trong chuyển đổi dùng WebDAV và trong những phiên bản cũ của một vài tập tin quản trị của Subversion, đường dẫn được sử dụng như những giá trị thuộc tính XML và tên thuộc tính được chứa trong tên thẻ XML. Điều này có nghĩa rằng đường dẫn chỉ có thể chứa những ký tự XML (1.0) hợp lệ và những thuộc tính được giới hạn trong những ký tự ASCII. Subversion cũng không cho phép những ký tự TAB, CRLF trong đường dẫn để ngăn ngừa tình huống đường dẫn bị sai trong lệnh diff và trong kết quả trả về của những lệnh như svn log hoặc svn status.

Mặc dù có vẻ như có rất nhiều thứ để ghi nhớ, trên thực tế những giới hạn này rất ít khi là vấn đề. Miễn là các thiết lập cục bộ của bạn tương thích với UTF-8 và bạn không dùng ký tự điều khiển trong đường dẫn của bạn, bạn sẽ không gặp vấn đề khi giao tiếp với Subversion. Ứng dụng khách Subversion giao-diện-dòng-lệnh thêm một bit phụ để hỗ trợ—để tạo một phiên bản hợp lệ sử dụng nội bộ nó sẽ tự động loại bỏ những ký tự đường dẫn không hợp lệ khi cần thiết trong URL mà bạn nhập.

[Warning] Warning

Trong vấn đề lựa chọn đường dẫn hợp lệ, Subversion không phải là một nhân tố duy nhất. Những nhóm làm việc sử dụng nhiều hệ điều hành khác nhau cũng cần phải cân nhắc đến giới hạn trên đường dẫn bởi những hệ điều hành này. Ví dụ, trong khi Windows không cho phép dấu hai chấm trong tên tập tin, người sử dụng Subversion trên Linux có thể dễ dàng thêm tập tin này vào kiểm soát phiên bản, kết quả là tập dữ liệu đó không thể được kiểm xuất trên Windows. Việc thêm nhiều tập tin vào trong một thư mục mà tên chỉ khác nhau trong những ký tự hoa/thường cũng sẽ gây ra những vấn đề cho những người sử dụng trên những hệ thống có phân biệt hoa-thường. Vì vậy, việc nhận thức rộng rãi về những hạn chế trên những hệ điều hành khác nhau, hệ thống tập tin khác nhau là cần thiết.