2010-01-18 28 views

Trả lời

3

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ụng git 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ụng git 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ụng git show-ref - có thể so sánh với bản sao SVN HEAD mới.

+0

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

+0

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

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