2008-12-03 29 views
15

Khi chạy get svn lấy để kéo các ngành mới mới nhất từ ​​kho svn thượng nguồn tôi đã nhận lỗi này:Fatal error giải nén một đối tượng cây trong một svn git fetch

$ git svn fetch 
fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d 
read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128 

Bây giờ mỗi nỗ lực git svn trên đó địa phương repo kết quả trong cùng một lỗi. Ban đầu tôi đã chạy phiên bản git 1.5.6.4_0 và sau khi lỗi tôi đã thử cập nhật lên 1.6.0.2_2 và sự cố vẫn tiếp diễn.

Có cách nào để dọn sạch tham nhũng này không? Một bản sao git svn mới của kho lưu trữ ngược dòng là tốt, nhưng tôi muốn giữ lại thiết lập hiện tại của mình. Tôi đã xem qua các tài liệu và googled cho vấn đề không có may mắn.

Trả lời

3

Nguyên nhân có khả năng nhất cho việc này là tệp hoặc cam kết (tham chiếu cây) bị hỏng hoặc bị thiếu. Hoặc thân cây có thể bị hỏng. Kiểm tra với:

git fsck --unreachable HEAD $(cat .git/refs/heads/*) 

Điều này sẽ hiển thị một loạt các tệp "đang lúng túng" mà bạn không quan tâm; các tệp bị hỏng sẽ báo cáo "Invalid SHA1" hoặc một số thứ như vậy. Tôi không biết một tệp bị thiếu sẽ báo cáo như thế nào. Xóa mọi mục bị hỏng và rsync khỏi kho lưu trữ ngược dòng của bạn để thay thế chúng.

+0

Cảm ơn thông tin. Thật không may, không có tập tin bị hỏng hiển thị, chỉ là một số cây/cam kết/đốm màu không thể truy cập được. Sử dụng git làm giao diện người dùng cho repo svn Tôi không có git ngược dòng để đồng bộ hóa để khôi phục. Tôi đã thử rsync từ bản sao git svn tươi, nhưng bị mất tất cả các chi nhánh địa phương của tôi. – notascleveras

+0

Đã có một báo cáo trong nhóm tin (hoặc có thể là danh sách gửi thư) cách đây 2 đến 3 tháng của một người nào đó có vấn đề tương tự mà đã biến mất khi họ repacked repo của họ. Tôi đã không thể tìm thấy báo cáo, điều đó có thể có nghĩa là nó không phải là chính xác các thông báo lỗi tương tự. – Paul

+0

Tôi vừa cố gắng đóng gói lại. Không may mắn. Bây giờ tôi đang chuyển sang bản sao git svn mới. Cảm ơn những lời đề nghị. – notascleveras

5

Tôi gặp vấn đề tương tự. Đó là do một phiên bản SVN cụ thể mà git-svn không thể đọc hoặc xử lý bằng cách nào đó. Đây là những gì tôi đã cố gắng theo thứ tự:

  1. Rewind tới một phiên bản được biết đến với công việc: git svn reset -r 42
  2. Thử phát lại lấy: git svn fetch - fetches mỗi sửa đổi bắt đầu từ 42 cho đến khi một tội (nói 50), sau đó cho thấy cùng một thông báo lỗi.
  3. Tìm nạp phụ huynh: git svn fetch --parent - Đừng hỏi tôi tại sao. Điều đó lấy thêm nhiều sửa đổi. Không có ý tưởng cho dù đó là có liên quan mặc dù.
  4. Thử lại tìm nạp: git svn fetch - Vẫn không hoạt động.
  5. Tìm nạp mỗi bản chỉnh sửa tiếp theo:
    1. git svn fetch -r 50 - Hoạt động.
    2. git svn fetch -r 51 - Trong khi không có thông báo lỗi, hãy tiếp tục.
    3. git svn fetch -r xx - Thông báo lỗi xuất hiện, đó là bản sửa đổi kém. Đừng quan tâm.
    4. git svn fetch -r xx+1 - Hoạt động.
  6. Thử tìm nạp: git svn fetch - Hoạt động! Bắt đầu tìm nạp thêm bản chỉnh sửa.

Quy trình phải được dọn sạch (có thể gần bước đầu tiên), nhưng nó đã hoạt động đối với tôi mà không phải bắt đầu lại bằng bản sao mới.

+0

Đã hoạt động! Nhưng trong trường hợp của tôi, tôi đã có thể lấy bản sửa đổi "có vấn đề". Tôi chỉ cần thiết lập lại để sửa đổi x-1 (x là phiên bản mới nhất) và hơn lấy x sửa đổi, mà làm việc và hơn "git svn fetch" chỉ làm việc. Bất cứ ai có thể giải thích những gì nó sửa chữa? git svn reset chỉ có thể xóa một tập tin cục bộ bị hỏng? – TCS

3

Tôi đã gặp thông báo lỗi tương tự sau khi tạo chi nhánh SVN mới. Tôi đã có thể giải quyết vấn đề bằng cách xóa hoàn toàn ".git/svn" thư mục và lấy từ SVN một lần nữa:

$ rm -rf .git/svn 
$ git svn fetch 
Rebuilding .git/svn/refs/remotes/trunk/.rev_map.1d5df120-ff1b-4f4f-af56-171ecbcc785d ... 

này lấy tất cả các cam kết từ SVN một lần nữa và giải quyết các lỗi.

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