Chương 3. Kho lưu trữ

Mục lục

Tạo kho lưu trữ
Tạo một Repository với các dòng lệnh máy khách
Tạo Kho Lưu Trữ Với TortoiseSVN
Truy cập địa phương đến Kho
Truy cập vào một kho lưu trữ trên một mạng chia sẻ
Bố cục Kho chứa
Sao lưu kho lưu trữ
kịch bản móc phía máy chủ
Các Liên kết Kiểm xuất
Truy cập Kho

Bất kể giao thức bạn sử dụng để truy cập vào kho lưu trữ của bạn, bạn luôn cần phải tạo ra ít nhất một kho lưu trữ. Điều này có thể được thực hiện với dòng lệnh Subversion hoặc với TortoiseSVN.

Nếu bạn đã không tạo ra một kho lưu trữ Subversion, đây là lúc để làm điều đó ngay bây giờ.

Tạo kho lưu trữ

Tạo một Repository với các dòng lệnh máy khách

  1. Tạo một thư mục trống với tên SVN (ví dụ như D:\SVN\ ), Được sử dụng như là gốc cho tất cả các kho lưu trữ của bạn.

  2. Tạo một thư mục khác MyNewRepository bên trong D:\SVN\ .

  3. Open the command prompt (or DOS-Box), change into D:\SVN\ and type

    svnadmin create --fs-type fsfs MyNewRepository
              

Bây giờ bạn đã có một kho lưu trữ mới đặt tại D:\SVN\MyNewRepository .

Tạo Kho Lưu Trữ Với TortoiseSVN

Hình 3.1. Các trình đơn TortoiseSVN cho các thư mục không phiên bản

Các trình đơn TortoiseSVN cho các thư mục không phiên bản

  1. Mở cửa sổ explorer

  2. Tạo một thư mục mới và đặt tên nó, ví dụ SVNRepository

  3. Nhấp chuột phải vào thư mục mới được tạo ra và chọn TortoiseSVN Tạo Kho Lưu Trữ ở đây ... .

    Kho lưu trữ sau đó được tạo ra bên trong thư mục mới. Bạn không thể tự chỉnh sửa các tập tin đó! . Nếu bạn nhận được bất kỳ lỗi nào, hãy chắc chắn rằng thư mục rỗng và không được bảo vệ chống ghi.

    Bạn cũng sẽ được hỏi xem bạn có muốn tạo ra một cấu trúc thư mục trong kho. Tìm hiểu về các lựa chọn bố trí ở phần “Bố cục Kho chứa” .

    TortoiseSVN sẽ thiết lập một biểu tượng thư mục tùy chỉnh khi nó tạo ra một kho lưu trữ để bạn có thể xác định các kho địa phương dễ dàng hơn. Nếu bạn tạo một kho lưu trữ bằng cách sử dụng dòng lệnh máy khách chính thức biểu tượng thư mục này không được phân định.

Mẹo

We also recommend that you don't use file:// access at all, apart from local testing purposes. Using a server is more secure and more reliable for all but single-developer use.

Truy cập địa phương đến Kho

Để truy cập vào kho lưu trữ địa phương của bạn, bạn cần đường dẫn đến thư mục đó. Chỉ cần nhớ rằng Subversion hy vọng tất cả các đường dẫn kho lưu trữ trong mẫu file:///C:/SVNRepository/. Lưu ý việc sử dụng xuyên suốt các dấu gạch chéo về phía trước.

Để truy cập vào một kho lưu trữ nằm trên một mạng chia sẻ, bạn có thể sử dụng ánh xạ ổ đĩa, hoặc bạn có thể sử dụng đường dẫn UNC. Đối với các đường dẫn UNC, hình thức là file://ServerName/path/to/Repos/ . Lưu ý rằng có chỉ có 2 dấu gạch chéo hàng đầu ở đây.

Trước SVN 1.2, đường dẫn UNC đã được đưa ra trong các hình thức mơ hồ hơn file:///\ServerName/path/to/Repos . Hình thức này vẫn còn được hỗ trợ, nhưng không khuyến khích.

Truy cập vào một kho lưu trữ trên một mạng chia sẻ

Although in theory it is possible to put a FSFS repository on a network share and have multiple users access it using file:// protocol, this is most definitely not recommended. In fact we would strongly discourage it, and do not support such use for various reasons:

  • Thứ nhất bạn đang đưa ra cho mỗi người sử dụng truy cập viết trực tiếp vào kho lưu trữ, do đó, bất kỳ người sử dụng có thể vô tình xóa toàn bộ kho lưu trữ hoặc làm cho nó không sử dụng được trong một số cách khác.

  • Thứ hai, không phải tất cả các giao thức chia sẻ tập tin mạng hỗ trợ các khóa mà Subversion yêu cầu, vì vậy bạn có thể tìm thấy kho lưu trữ của bạn bị hỏng. Nó có thể không xảy ra ngay lập tức, mà là vào một ngày hai người dùng sẽ cố gắng truy cập vào kho lưu trữ tại cùng một thời gian.

  • Thứ ba, các quyền tập tin đã được thiết lập chỉ cần như vậy. Bạn có thể chỉ là đi với nó trên một chia sẻ của Windows, nhưng đặc biệt khó khăn với SAMBA .

  • If one person installs a newer version of the client which upgrades the repository format, then everyone else will be unable to access the repository until they also upgrade to the new client version.

truy cập file:// chỉ là để dành cho truy cập người sử dụng duy nhất của địa phương, đặc biệt là kiểm tra và gỡ lỗi. Khi bạn muốn chia sẻ các kho lưu trữ, bạn thực sự cần lập một máy chủ thích hợp, và nó gần như không khó khăn như bạn nghĩ. Đọc phần “Truy cập Kho” để được hướng dẫn về lựa chọn và thiết lập một máy chủ.

Bố cục Kho chứa

Trước khi bạn nhập dữ liệu vào kho lưu trữ trước tiên bạn nên suy nghĩ về cách bạn muốn tổ chức dữ liệu của bạn. Nếu bạn sử dụng một trong các bố trí được đề nghị, sau đó bạn sẽ có nó dễ dàng hơn nhiều.

Có một số cách, tiêu chuẩn được đề nghị cho việc tổ chức một kho lưu trữ. Hầu hết mọi người tạo ra một thư mục thân cây để giữ dòng chính của việc phát triển, một thư mục chi nhánh để chứa các bản sao chi nhánh, và một thư mục thẻ để chứa bản sao thẻ. Nếu kho lưu trữ chứa chỉ có một dự án, sau đó thường người ta tạo ra các thư mục cấp cao nhất này:

/trunk
/branches
/tags
    

Bởi vì cách bố trí này thường được sử dụng, khi bạn tạo ra một kho lưu trữ mới sử dụng TortoiseSVN, nó cũng sẽ đề nghị tạo ra các cấu trúc thư mục đó cho bạn.

Nếu một kho lưu trữ có nhiều dự án, mọi người thường đánh chỉ số bố trí theo nhánh:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

... hoặc bởi dự án:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Lập chỉ mục bởi dự án có ý nghĩa nếu dự án không liên quan chặt chẽ và mỗi dự án được kiểm tra ra một cách cá nhân. Đối với các dự án liên quan nơi bạn có thể muốn kiểm tra tất ra cả các dự án trong một bươc, hoặc các dự án liên kết cùng nhau trong một gói phân phối duy nhất, nó thường tốt hơn để chỉ số theo chi nhánh. Bằng cách này bạn chỉ có một thân cây để kiểm tra ra, và các mối quan hệ giữa các tiểu dự án dễ dàng nhìn thấy được.

Nếu bạn áp dụng tiếp cận theo mức cao nhất /Trunk/tags/branches, không có gì để nói rằng bạn phải sao chép toàn bộ thân cây cho mỗi chi nhánh và thẻ, trong một số cách thì cấu trúc này cung cấp sự linh hoạt nhất.

Đối với các dự án không liên quan, bạn có thể thích sử dụng kho riêng biệt. Khi bạn cam kết thay đổi, đó là số phiên bản của toàn bộ kho với thay đổi, không phải là số phiên bản của dự án. Có 2 dự án không liên quan chia sẻ một kho lưu trữ có thể có nghĩa là những cách biệt lớn giữa các số sửa đổi. Các dự án Subversion và TortoiseSVN xuất hiện tại cùng một địa chỉ host, nhưng là kho hoàn toàn riêng biệt cho phép phát triển độc lập, và không có sự nhầm lẫn về số bản xây dựng.

Tất nhiên, bạn có thể tùy ý bỏ qua các bố cục chung này. Bạn có thể tạo ra bất kỳ loại biến thể, bất cứ điều gì làm việc tốt nhất cho bạn hoặc nhóm của bạn. Hãy nhớ rằng bất cứ điều gì bạn chọn, nó không phải là một cam kết lâu dài. Bạn có thể tổ chức lại kho lưu trữ của bạn bất cứ lúc nào. Bởi vì các ngành và các thẻ là những thư mục bình thường, TortoiseSVN có thể di chuyển hoặc đổi tên chúng bất cứ cách nào bạn muốn.

Chuyển đổi từ một trong những bố trí khác chỉ là một vấn đề phát hành một loạt các di chuyển phía máy chủ Nếu bạn không thích cách mà mọi thứ được tổ chức trong kho, chỉ cần sắp xếp các thư mục vòng vòng.

Vì vậy, nếu bạn chưa tạo ra một cấu trúc thư mục cơ bản bên trong kho của bạn, bạn nên làm điều đó bây giờ. Có hai cách để đạt được điều này. Nếu bạn chỉ đơn giản là muốn tạo ra một cấu trúc /Trunk/tags/branches, bạn có thể sử dụng trình duyệt kho để tạo ra ba thư mục (trong ba cam kết riêng biệt). Nếu bạn muốn tạo ra một hệ thống phân cấp sâu sắc hơn sau đó nó đơn giản tạo ra một cấu trúc thư mục trên đĩa đầu tiên và nhập khẩu nó trong một cam kết duy nhất, như thế này:

  1. tạo ra một thư mục trống mới trên ổ đĩa cứng của bạn

  2. tạo ra cấu trúc thư mục cấp cao nhất theo mong muốn của bạn bên trong thư mục đó - không đặt bất kỳ tập tin nào trong đó!

  3. nhập khẩu cấu trúc này vào kho lưu trữ thông qua một kích chuột phải vào thư mục có chứa cấu trúc thư mục và chọn TortoiseSVN Nhập khẩu ... Trong hộp thoại nhập khẩu, nhập URL đến kho lưu trữ của bạn và nhấn OK. Việc này sẽ nhập khẩu thư mục tạm thời của bạn vào thư mục gốc của kho để tạo ra bố trí kho lưu trữ cơ bản.

Note that the name of the folder you are importing does not appear in the repository, only its contents. For example, create the following folder structure:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags
      

Import C:\Temp\New into the repository root, which will then look like this:

/trunk
/branches
/tags