2012-01-05 19 views
24

Khi cố gắng bó cài đặt tôi nhận được lỗi sauRails 3/Git/Bundler Fatal không thể phân tách đối tượng

Fatal could not parse object '8c11dd........ 
Git error: command git reset --hard '8c11dd 

If this error persists you can try removing the cache directory. 

đã loại bỏ các thư mục bộ nhớ cache không có thành công, có ai nhìn thấy lỗi này trước đây chưa?

Windows 7 64-bit

+0

Đó có phải là dấu ngoặc đơn không? Điều đó chắc chắn sẽ gây ra một vấn đề. – d11wtq

+0

Để làm rõ, một cái gì đó trong đó Gemfile trỏ đến một git ref 8c11dd, nhưng có một trích dẫn đơn giả trong đó. – d11wtq

+0

Xin lỗi các bạn, để làm rõ điều đó nên là '8c11dd ........' Giá trị băm dài sau một dấu trích dẫn đóng –

Trả lời

5

Điều gì đó đã xảy ra với kho lưu trữ. Trong trường hợp của tôi, nó đã bị xóa/di chuyển. Vì vậy, tôi chỉ thay đổi địa chỉ git.

Nếu :git => của bạn trỏ đến github, có thể là một ý tưởng hay để truy cập trang của dự án github đó.

31

Đã chuyển sang cùng một lỗi khi tôi di chuyển các kho lưu trữ trên các máy chủ. Giải quyết nó bằng cách xóa Gemfile.lock và chạy bundle install. Điều này tạo ra một Gemfile.lock cập nhật đã giúp giải quyết lỗi.

+1

Cảm ơn vì điều này. Tôi đã có cùng một vấn đề và đã thử một loạt các thứ khác nhau nhưng quên điều đơn giản này. Có nó hoạt động. – Fralcon

+4

Xóa Gemfile.lock thường là một ý tưởng tồi. Khi bạn chạy 'bundle install' một lần nữa nó sẽ lấy các phiên bản mới nhất của bất kỳ đá quý không xác định. Mà rất có thể sẽ gây ra một số nhức đầu. –

+1

Đồng ý với Tony. Khi tôi gặp phải lỗi này, nó không phải là một vấn đề đang chạy 'bundle install' trong dự án của tôi. Một lựa chọn tốt hơn sẽ là sử dụng 'cập nhật gói '. – user553620

1

Tôi đã gặp sự cố tương tự với Capistrano sử dụng set :deploy_via, :remote_cache khi tôi chuyển sang ngã ba github khác của kho lưu trữ.

Công thức capistrano của tôi đang trỏ đến ngã ba mới, nhưng bộ nhớ cache trên máy chủ từ xa vẫn còn có origin trỏ tới kho lưu trữ cũ và do đó không tìm thấy cam kết mới.

Cố định bằng cách thực hiện trên mỗi máy chủ từ xa:

git remote set-url origin <new fork>

7

Nếu bạn đang sử dụng Capistrano tháo (chia sẻ /) cache-copy nên giải quyết vấn đề.

+0

Đây là vấn đề của tôi! – neilmarion

+0

Nó giải quyết cho tôi, cảm ơn rất nhiều! –

0

Trong trường hợp của tôi nhánh git mà tôi đang sử dụng cho một đá quý đã được hợp nhất thành chính và nhánh bị xóa. Cập nhật Gemfile của tôi, xóa Gemfile.lock và chạy lại bundle đã giải quyết nó cho tôi.

6

Nhiều áp phích ở đây là chính xác ở chỗ nó có khả năng nhất định phải làm với Gemfile.lock không đồng bộ do một kho lưu trữ di chuyển hoặc di chuyển, nhưng giống như những người khác đã chỉ ra, xóa nó không phải là khôn ngoan phán quyết. Kiểm tra Gemfile.lock và tìm một mục GIT cho repo được đề cập. Điều quan trọng cần kiểm tra là thuộc tính siêu dữ liệu revision nó trỏ đến ... Có nhiều khả năng là chỉ đến một băm sửa đổi không còn tồn tại. Lời khuyên của tôi là tự chỉnh sửa nó để trỏ đến nhánh mà bạn muốn kéo xuống bằng cách tham chiếu chéo nó với logfile thực tế của Repo (vì vậy bạn hãy chắc chắn rằng nó phù hợp với tệp thực sự trong Gemfile thực tế của bạn) như sau :

GIT 
    remote: https://github.com/YourUserOrOrganization/your-gem-repo.git 
    revision: <UPDATE AND FIX ME!> 
    specs: 
    some-random-dep1 (2.4.3) 
     some-random-dep2 (>= 1.7.9) 
     some-random-dep3 (>= 1.6.7) 
0

Bạn có thể sử dụng cờ '--source' với 'cập nhật gói'. Vì vậy, nó sẽ là:

bundle update --source your_gem

0

Vấn đề này xảy ra khi có những thay đổi như lực đẩy đến một repo git được tham chiếu trong một Gemfile.

Giải pháp là để nhận xét rằng dòng đá quý trong Gemfile, chạy bó, bỏ ghi chú và đóng gói lại. Sau đó, Gemfile.lock sẽ tham chiếu một phiên bản git hợp lệ.

Tôi đoán nó sẽ giúp quá: bundle update my_gem_name

0

tôi đang xây dựng một viên ngọc và vấn đề là một chút khác biệt so với câu trả lời khác.

Tôi nhắm mục tiêu phiên bản cụ thể trong Gemfile nhưng vì mục đích phát triển, tôi đã thay đổi bundle config để tải phiên bản địa phương. Tôi thiết lập một phiên bản khác trên máy cục bộ của mình, làm cho mục tiêu Gemfile.lock nhắm mục tiêu khác trong số specs.

Tập tin này được gửi qua máy chủ thông qua git và máy chủ rõ ràng là không thể truy cập phiên bản đó của đá quý ...

Để khắc phục điều đó, chỉ cần chỉ định một VERSION trong đá quý phù hợp để một trong những bạn' re developping/push on và nó sẽ ổn thôi.

gem "my-gem", git: "https://github.com/Loschcode/my-gem.git", branch: "master", tag: "v0.2.2" 
Các vấn đề liên quan