Tôi muốn tạo bản sao lưu kho lưu trữ git mà tôi sử dụng để theo dõi kho lưu trữ svn (với git-svn). Tôi có thể sử dụng git push --mirror cho mục đích đó hay tôi sẽ mất bất kỳ thông tin liên quan đến git-svn nào khi tôi cần khôi phục bản sao lưu?Git push --mirror có đủ để sao lưu kho lưu trữ được sử dụng với git-svn không?
Trả lời
Có thể git push
hoặc git bundle
không bao gồm siêu dữ liệu svn.
Nhưng theo git svn
intro, bạn có thể thử và khôi phục siêu dữ liệu svn đó.
(từ chối trách nhiệm: không kiểm tra trực tiếp)
Xây dựng lại git-svn metadata
Nếu bạn đã sao chép kho từ một nơi khác (ví dụ, từ repo.utsl.gen.nz
) thông qua git-clone
, hoặc nếu bạn chỉ thổi nó đi, sau đó bạn sẽ không có bất kỳ siêu dữ liệu SVN - chỉ cam kết.
Trong trường hợp đó, bạn cần phải xây dựng lại siêu dữ liệu SVN của bạn, ví dụ, để giữ cho thân cây được cập nhật - git-svn
sẽ xây dựng lại siêu dữ liệu của nó khi bạn chạy git-svn fetch
.
$ git update-ref refs/remotes/trunk origin/svn/trunk
$ git svn init https://svn.perl.org/parrot/trunk
Using higher level of URL: https://svn.perl.org/parrot/trunk => https://svn.perl.org/parrot
$ git svn fetch
Rebuilding .git/svn/git-svn/.rev_db.d31e2699-5ff4-0310-a27c-f18f2fbe73fe ...
r17220 = 78ad11bf2f61b35e1cb32a978ab546d198be8a2e
r17219 = 605264b06d84670ec402d7a7a21c0016cae3a928
r17218 = a8ceba9c503d2be8e8e69a3df454017322906cf5
...
Điều quan trọng cần nhớ với xây dựng lại
git-svn
siêu dữ liệu là làm cho refs trông giống như họ sẽ tìm từ nhập khẩu tươi; bạn có thể thực hiện việc này bằng cách sử dụnggit update-ref
như trên, bằng cách sao chép các tệp refs xung quanh bên trong.git/refs/
hoặc sử dụnggit pack-refs
rồi chỉnh sửa.git/packed-refs
.
Để kiểm tra xem bạn đã nhận đúng chưa, hãy sử dụnggit show-ref
- có thể so sánh với bản sao SVNHEAD
mới.
- 1. Có phải "git push --mirror" đủ để sao lưu kho lưu trữ của tôi không?
- 2. Làm thế nào để giữ một kho lưu trữ git sao lưu đồng bộ với cục bộ, "git push --mirror" hoặc "git remote update"
- 3. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 4. Lưu trữ Git của kho lưu trữ với các thay đổi không được cam kết
- 5. Đẩy vào kho lưu trữ git được lưu trữ cục bộ qua HTTP
- 6. Git, xóa kho lưu trữ
- 7. Cách Python để sao chép kho lưu trữ git
- 8. Git-svn có thể được sử dụng trên các kho lưu trữ lớn, phân nhánh không?
- 9. git kho lưu trữ nhân bản kho
- 10. Ghi đè kho lưu trữ git từ xa với kho lưu trữ của tôi
- 11. Tạo kho lưu trữ git chứa một kho git khác
- 12. Làm cách nào để sao chép thư mục từ kho lưu trữ git này sang kho lưu trữ git khác, lưu giữ lịch sử?
- 13. Git chỉ áp dụng cho các kho lưu trữ trống?
- 14. Chuyển kho lưu trữ Git sang SVN với SubGit
- 15. Quản lý nhiều kho lưu trữ git
- 16. Tôi có thể sử dụng kho lưu trữ GIT với các máy khách SVN không?
- 17. đặt kho lưu trữ ftp bằng git
- 18. Xóa kho lưu trữ git trên Bitbucket?
- 19. git khi thay đổi kho lưu trữ
- 20. Đối diện với `git push --mirror`? Làm thế nào để lấy lại repo của tôi?
- 21. Biểu tượng kho lưu trữ Git
- 22. Kho lưu trữ bản sao JGit
- 23. git đẩy lỗi masteroku: Kho lưu trữ không tìm thấy
- 24. Cách chọn lọc sao chép kho lưu trữ git
- 25. Làm cách nào để sao chép kho lưu trữ git và giữ điều khiển từ xa?
- 26. Làm thế nào để thay đổi một kho lưu trữ git nhân bản với --bare để khớp với một nhân bản vô tính với --mirror?
- 27. Tôi làm cách nào để sử dụng Git với nhiều kho lưu trữ từ xa?
- 28. git đẩy tới kho lưu trữ từ xa "Không thể đọc từ kho lưu trữ từ xa"
- 29. Git kho lưu trữ tương thích ngược
- 30. Git "dường như không phải là kho lưu trữ git"
Cảm ơn câu trả lời của bạn. Git update-ref cung cấp cho tôi thông báo: "fatal: origin/svn/trunk: không phải là SHA1 hợp lệ", nhưng git show-ref liệt kê refs/remotes/trunk cho git repo mirror. Tôi có thể bỏ qua cập nhật-ref sau đó không? – fawick
Tôi có kết quả tốt hơn với 'git update-ref refs/remotes/trunk origin/master' _after_' git svn init'. Nhưng, không giống như ví dụ trên, tôi đã sử dụng 'git svn init' với các tùy chọn -t/-b để thiết lập các thẻ và nhánh, vì vậy tôi cũng phải thiết lập các tham chiếu cho từng thẻ. (Thu được bằng cách chạy 'git show-ref' trên bản sao git-svn gốc.) – seanf