Nhập khẩu dữ liệu vào một kho chứa

Nhập khẩu

Nếu bạn đang nhập vào một kho lưu trữ hiện tại đã có một số dự án, thì cấu trúc kho lưu trữ đã được quyết định. Nếu bạn đang nhập dữ liệu vào một kho lưu trữ mới, thì nó đáng để dành thời giansuy nghĩ về nó sẽ được tổ chức như thế nào. Đọc phần “Bố cục Kho chứa” để được tư vấn thêm.

Phần này mô tả các lệnh nhập khẩu Subversion được thiết kế để nhập khẩu một hệ thống phân cấp thư mục vào kho lưu trữ trong một lần. Mặc dù nó làm được việc, nó có một số thiếu sót:

  • Không có cách nào để lựa chọn các tập tin và thư mục để bao gồm, ngoài việc sử dụng các thiết lập bỏ qua toàn cục.

  • Các thư mục được nhập khẩu không trở thành một bản sao làm việc. Bạn phải làm một kiểm tra ra để sao chép các tập tin từ máy chủ.

  • Thật dễ dàng để nhập khẩu với các cấp độ thư mục sai trong kho.

Vì những lý do này, chúng tôi khuyên bạn không sử dụng lệnh nhập khẩu chút nào mà nên làm theo phương pháp hai bước được mô tả trong phần “Nhập khẩu Tại chỗ” , Trừ khi bạn đang thực hiện bước đơn giản để tạo ra một cấu trúc /trunk/tags/branches ban đầu trong kho lưu trữ của bạn. Bởi vì bạn đang ở đây, đây là cách việc nhập khẩu cơ bản hoạt động...

Trước khi bạn nhập khẩu dự án của bạn vào một kho lưu trữ, bạn nên:

  1. Hủy bỏ tất cả các tập tin không cần thiết để xây dựng dự án (các tập tin tạm thời, các tập tin được tạo ra bởi trình biên dịch, ví dụ như: *. obj, những chương trình nhị phân được biên dịch, ...)

  2. Tổ chức các tập tin trong thư mục và thư mục con. Mặc dù nó có thể đổi tên / di chuyển các tập tin sau đó, chúng tôi đề cao việc có được cấu trúc của dự án của bạn ngay ngắn trước khi nhập khẩu!

Bây giờ chọn thư mục cấp cao nhất của cấu trúc thư mục dự án của bạn trong cửa sổ thám hiểm và click chuột phải để mở trình đơn ngữ cảnh. Chọn lệnh TortoiseSVN Nhập khẩu ... để gọi lên một hộp thoại:

Hình 4.6. Hộp thoại nhập khẩu

Hộp thoại nhập khẩu


In this dialog you have to enter the URL of the repository location where you want to import your project. It is very important to realise that the local folder you are importing does not itself appear in the repository, only its content. For example if you have a structure:

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images
      

and you import C:\Projects\Widget into http://mydomain.com/svn/trunk then you may be surprised to find that your subdirectories go straight into trunk rather than being in a Widget subdirectory. You need to specify the subdirectory as part of the URL, http://mydomain.com/svn/trunk/Widget-X. Note that the import command will automatically create subdirectories within the repository if they do not exist.

Các thông báo nhập khẩu được sử dụng như một thông điệp tường trình.

Theo mặc định, các tập tin và thư mục mà phù hợp với các mô hình bỏ qua toàn cục không được nhập khẩu. Để ghi đè lên hành vi này, bạn có thể sử dụng hộp kiểm Bao gồm các file bị bỏ qua . Tham khảo phần “Các Thiết Lập Tổng Qu” để biết thêm thông tin về việc thiết lập một mô hình bỏ qua toàn cục.

Ngay sau khi bạn nhấn OK TortoiseSVN nhập khẩu các cây thư mục hoàn chỉnh bao gồm tất cả các tập tin vào kho lưu trữ. Dự án hiện đang được lưu trữ trong kho dưới sự kiểm soát phiên bản. Xin lưu ý rằng thư mục mà bạn đã nhập khẩu KHÔNG theo phiên bản kiểm soát! Để có được một bản sao làm việc có kiểm soát phiên bản bạn cần phải làm một Kiểm Xuất của các phiên bản bạn vừa nhập khẩu. Hoặc đọc để tìm hiểu làm thế nào để nhập khẩu một thư mục tại chỗ.

Nhập khẩu Tại chỗ

Giả sử bạn đã có một kho lưu trữ, và bạn muốn thêm vào một cấu trúc thư mục mới cho nó, chỉ cần làm theo các bước sau:

  1. Sử dụng trình duyệt kho để tạo ra một thư mục dự án mới trực tiếp trong kho. Nếu bạn đang sử dụng một bố cục tiêu chuẩn, có thể bạn sẽ muốn tạo cái này như là một thư mục con của thân cây chứ không phải trong thư mục gốc kho. Trình duyệt kho lưu trữ cho thấy cấu trúc kho lưu trữ giống như Windows Explorer, vì vậy bạn có thể nhìn thấy mọi thứ được tổ chức như thế nào.

  2. Kiểm tra các thư mục mới trên đầu trang của thư mục mà bạn muốn nhập khẩu. Bạn sẽ nhận được một cảnh báo rằng các thư mục địa phương không rỗng. Bỏ qua cảnh báo đó. Bây giờ bạn có một thư mục cấp cao được phiên bản với nội dung không được phiên bản.

  3. Sử dụng TortoiseSVN Thêm ... trên thư mục được phiên bản này là thêm một số hoặc tất cả nội dung. Bạn có thể thêm và loại bỏ các tập tin, đặt thuộc tính svn:ignore trên các thư mục và thực hiện bất kỳ thay đổi khác mà bạn cần.

  4. Cam kết các thư mục cấp cao nhất, và bạn có một cây mới được phiên bản, và một bản sao làm việc địa phương, được tạo ra từ thư mục hiện tại của bạn.

Các tập tin Đặc biệt

Đôi khi bạn cần phải có một tập tin dưới sự kiểm soát phiên bản, trong đó có chứa các dữ liệu người dùng cụ thể. Điều đó có nghĩa là bạn có một tập tin mà mọi nhà phát triển / người dùng cần phải sửa đổi để phù hợp với thiết lập địa phương của anh / cô ta. Tuy nhiên, phiên bản một tập tin như vậy là khó khăn bởi vì mỗi người sử dụng sẽ cam kết thay đổi của anh / cô ta mỗi khi vào kho lưu trữ.

Trong trường hợp này, chúng tôi đề nghị sử dụng các tập tin mẫu . Bạn tạo một tập tin mà chứa tất cả các dữ liệu mà nhà phát triển của bạn sẽ cần, thêm tập tin đó vào để kiểm soát phiên bản và để cho các nhà phát triển kiểm tra tập tin này ra. Sau đó, mỗi nhà phát triển tạo một bản sao của tập tin đó và đổi tên bản sao đó. Sau đó, sửa đổi các bản sao không phải là một vấn đề nữa.

As an example, you can have a look at TortoiseSVN's build script. It calls a file named default.build.user which doesn't exist in the repository. Only the file default.build.user.tmpl. default.build.user.tmpl is the template file which every developer has to create a copy from and rename that file to default.build.user. Inside that file, we added comments so that the users will see which lines they have to edit and change according to their local setup to get it working.

So as not to disturb the users, we also added the file default.build.user to the ignore list of its parent folder, i.e. we've set the Subversion property svn:ignore to include that filename. That way it won't show up as unversioned on every commit.