2016-08-09 16 views
7

Chúng tôi có một kho lưu trữ SVN lớn (~ 100GB) mà chúng tôi đang cố gắng di chuyển sang Git. Vấn đề là, repo chứa rất nhiều tệp nhị phân trải rộng trên cây thư mục.SVN để Git di chuyển với Git-LFS

Điều đầu tiên mà chúng tôi nghĩ là để di chuyển các tập tin nhị phân để Git-LFS, nhưng có một số câu hỏi mà chúng ta cần phải giải quyết trước:

  1. Chúng ta cần phải giữ lại lịch sử cam kết. Có thể thay thế tệp nhị phân bằng con trỏ tệp LFS trong các cam kết trước đó không?
  2. Chúng tôi đang sử dụng một số chi nhánh. Trong quá trình thanh toán, git-lfs lưu trữ các tệp nhị phân hiện có để việc thanh toán giữa các nhánh sẽ không liên quan đến việc tải xuống lại các tệp nhị phân đó một lần nữa.
  3. Git-LFS có hỗ trợ có một tệp nhị phân trên các nhánh khác nhau hay chúng ta nên sao chép từng tệp nhị phân cho mỗi nhánh trên máy chủ?
  4. Có thể thực hiện thanh toán một phần các tệp nhị phân trong quá trình thanh toán không? Vì vậy, chỉ một số phần của tệp nhị phân sẽ được tải xuống nếu cần.
  5. Trên máy chủ, tệp nhị phân này nên được lưu trữ như thế nào? Có ứng dụng máy chủ nào cần lưu trữ các tệp nhị phân đó hay máy chủ HTTP/FTP đơn giản sẽ thực hiện không?

Cảm ơn

Trả lời

0

Tôi nghĩ rằng tôi đã tìm thấy câu trả lời cho điều này, mặc dù chưa hoàn thành thử nghiệm nó bản thân mình (bước đầu tiên phải mất nhiều giờ đối với kho lưu trữ của chúng tôi). Bí quyết là từ tài liệu Atlassian này:

https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html

này là cụ thể cho Bitbucket, nhưng tôi tưởng tượng nó sẽ làm việc với bất kỳ kho git.

Bước 1: Bước đầu tiên là chuyển đổi dự án SVN thành git. Điều này có thể được thực hiện với git-svn như đã mô tả ở đây:

https://john.albin.net/git/convert-subversion-to-git

Trang đó cũng mô tả cách thực hiện qua các tác giả và thêm vào các chi tiết phụ cho phép trong các tác giả git (tên thật và địa chỉ email).

Bước 2: Bây giờ, hãy làm theo hướng dẫn trong tài liệu Atlassian ở trên để sử dụng "BFG Repo-Cleaner" thay thế tất cả "tệp lớn" trong lịch sử của bạn với tham chiếu đến git LFS. Đây là một công cụ đơn giản để thực hiện một số việc cũng có thể được thực hiện với công cụ git-filter-branch.

Tôi có thể cung cấp hướng dẫn từng bước tại đây, nhưng tôi chỉ muốn sao chép từ các nguồn khác và tôi chưa thực sự thử bản thân mình (chạy ngay bây giờ). Tôi sẽ cập nhật lại khi tôi thấy kết quả ở đây.

Các vấn đề liên quan