SubGit (vs Blue Screen of Death)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Đó là tất cả.
+ Để cập nhật từ SVN, kho Git được tạo bởi lệnh đầu tiên.
subgit import directory/path/Local.git.Repo
Tôi đã sử dụng một cách để di chuyển đến Git ngay lập tức cho một kho lưu trữ khổng lồ.
Tất nhiên bạn cần một số chuẩn bị.
Nhưng bạn có thể không dừng quá trình phát triển.
Đây là cách của tôi.
Giải pháp của tôi trông như:
- Di chuyển SVN sang kho Git
- Cập nhật kho Git ngay trước khi nhóm chuyển sang .
Di chuyển mất rất nhiều thời gian cho một kho lưu trữ SVN lớn.
Nhưng cập nhật di chuyển hoàn thành chỉ trong vài giây.
Tất nhiên là tôi đang sử dụng SubGit , mẹ ạ . git-svn làm cho tôi màn hình xanh chết chóc . Chỉ cần liên tục. Và git-svn làm tôi nhàm chán với lỗi nghiêm trọng " tên tệp quá dài " của Git .
BƯỚC
1. Tải xuống SubGit
2. Chuẩn bị di chuyển và cập nhật lệnh.
Giả sử chúng ta làm điều đó cho Windows (việc chuyển sang Linux) không quan trọng.
Trong thư mục bin cài đặt của SubGit (subgit-2.XX \ bin), tạo hai tệp .bat.
Nội dung của tệp / lệnh cho việc di chuyển:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Lệnh "bắt đầu" là tùy chọn ở đây (Windows). Nó sẽ cho phép nhìn thấy lỗi khi bắt đầu và để lại một vỏ được mở sau khi hoàn thành SubGit.
Bạn có thể thêm vào đây các tham số bổ sung tương tự như git-svn . Tôi chỉ sử dụng --default-domain myCompanyDomain.com để sửa tên miền của địa chỉ email của các tác giả SVN.
Tôi có cấu trúc của kho lưu trữ SVN tiêu chuẩn (thân cây / nhánh / thẻ) và chúng tôi không gặp rắc rối với "ánh xạ tác giả". Vì vậy, tôi không làm gì nữa.
(Nếu bạn muốn di chuyển các thẻ như chi nhánh hoặc SVN của bạn có nhiều thư mục chi nhánh / thẻ bạn có thể xem xét để sử dụng phương pháp SubGit dài dòng hơn )
Mẹo 1 : Sử dụng - tối đa sửa đổi YourSvnRevNumber để xem nhanh mọi thứ diễn ra như thế nào (một loại gỡ lỗi). Đặc biệt hữu ích là để xem tên tác giả hoặc email được giải quyết.
Hoặc để giới hạn độ sâu lịch sử di chuyển.
Mẹo 2 : Di chuyển có thể bị gián đoạn ( Ctrl+ C) và được khôi phục bằng cách chạy lệnh / tệp cập nhật tiếp theo.
Tôi không khuyên làm điều này cho các kho lớn. Tôi đã nhận được "Ngoại lệ bộ nhớ Java + Windows".
Mẹo 3 : Tốt hơn để tạo một bản sao của kho lưu trữ kết quả của bạn.
Nội dung của tệp / lệnh để cập nhật:
start subgit import directory/path/Local.git.Repo
Bạn có thể chạy nó bất kỳ số lần nào khi bạn muốn nhận được cam kết của nhóm cuối cùng vào kho Git của mình.
Cảnh báo! Đừng chạm vào kho lưu trữ trần của bạn (ví dụ: tạo chi nhánh).
Bạn sẽ nhận được lỗi nghiêm trọng tiếp theo:
Lỗi không thể phục hồi: không đồng bộ hóa và không thể được đồng bộ hóa ... Dịch các bản sửa đổi Subversion sang Git ...
3. Chạy lệnh / tập tin đầu tiên. Sẽ mất một thời gian cho một kho lưu trữ lớn. 30 giờ cho kho lưu trữ khiêm tốn của tôi.
Đó là tất cả.
Bạn có thể cập nhật kho Git của mình từ SVN bất cứ lúc nào bằng cách chạy tệp / lệnh thứ hai. Và trước khi chuyển đổi nhóm phát triển của bạn sang Git.
Nó sẽ chỉ mất vài giây.
Có thêm một nhiệm vụ hữu ích.
Đẩy kho Git cục bộ của bạn sang kho Git từ xa
Có phải trường hợp của bạn? Hãy tiếp tục.
- Định cấu hình điều khiển từ xa của bạn
Chạy:
$ git remote add origin url://your/repo.git
- Chuẩn bị gửi ban đầu kho lưu trữ Git cục bộ khổng lồ của bạn đến kho lưu trữ từ xa
Theo mặc định, Git của bạn không thể gửi khối lớn.
gây tử vong: Kết thúc từ xa treo lên bất ngờ
Hãy chạy cho nó:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB, v.v.
Khắc phục sự cố chứng chỉ cục bộ của bạn . Nếu máy chủ git của bạn sử dụng chứng chỉ bị hỏng.
Tôi đã bị vô hiệu hóa chứng chỉ .
Ngoài ra, máy chủ Git của bạn có thể có giới hạn số lượng yêu cầu cần được sửa chữa .
- Đẩy tất cả di chuyển đến kho lưu trữ Git từ xa của nhóm.
Chạy với Git cục bộ:
git push origin --mirror
( git đẩy gốc '*: *' cho các phiên bản Git cũ)
Nếu bạn gặp phải các lỗi sau: error: could spawn git: Không có tệp hoặc thư mục như vậy ... Đối với tôi, việc giải trí đầy đủ kho lưu trữ của tôi sẽ giải quyết lỗi này (30 giờ). Bạn có thể thử các lệnh tiếp theo
git push origin --all
git push origin --tags
Hoặc cố gắng cài đặt lại Git ( vô dụng đối với tôi ). Hoặc bạn có thể tạo các nhánh từ tất cả các thẻ của bạn và đẩy chúng. Hoặc, hoặc, hoặc ...