2012-11-13 39 views
10

Repo của tôi sử dụng phiên bản tùy chỉnh của Recurly-js và tôi đã đóng gói nó dưới dạng mô-đun con bằng cách sử dụng các hướng dẫn này https://devcenter.heroku.com/articles/git-submodules. Tuy nhiên, tôi nhận được lỗi sau bây giờ khi tôi cố gắng để triển khai:Đẩy Heroku bị từ chối, cài đặt Submodule không thành công

----> Heroku receiving push 
-----> Git submodules detected, installing 
     Submodule 'recurly-js' (/app/tmp/repo.git/recurly-js) registered for path 'recurly-js' 
     Initialized empty Git repository in /tmp/build_3iacvn8h2rnha/recurly-js/.git/ 
     fatal: '/app/tmp/repo.git/recurly-js' does not appear to be a git repository 
     fatal: The remote end hung up unexpectedly 
     Clone of '/app/tmp/repo.git/recurly-js' into submodule path 'recurly-js' failed 
!  Heroku push rejected, Submodule install failed 

Trả lời

15

Tôi đã đưa ra câu trả lời làm nhận xét cho câu trả lời của @ jeffrey-k, nhưng bây giờ tôi thậm chí còn chắc chắn hơn về nó, tôi sẽ viết nó ở đây.

repo của tôi đột nhiên dừng lại đẩy, và hai điều này 'cố định' nó:

  1. Thay đổi tất cả các URL submodule công cộng (nếu có) từ việc sử dụng các URL vận chuyển ssh để readonly URL vận chuyển git (ví dụ, từ [email protected]:yaniv-aknin/public-project đến git://github.com/yaniv-aknin/public-project). Để thực hiện việc này, bạn cần phải chỉnh sửa tệp có tên .gitmodules trong thư mục gốc của repo của bạn.
  2. Xóa tất cả các mô-đun con riêng tư (nếu có) khỏi repo của tôi (xóa chúng khỏi .gitmodulesrm -fr các thư mục của chúng).
  3. Cam kết các thay đổi.

này xử lý hai sự thay đổi những hành vi:

  1. Heroku sử dụng để có thể nhân bản submodules từ github bằng cách sử dụng phương tiện giao thông ssh (có lẽ họ đã có một số 'Heroku chung khoá ssh' và tài khoản github, nhưng không chắc).
  2. Heroku được sử dụng để bỏ qua các mô-đun con không thành công và chỉ tiếp tục đẩy.

Tôi đã mở một vé hỏi xem phân tích của tôi có chính xác hay không và tại sao thay đổi xảy ra (không có cảnh báo mà tôi đã nghe) - Tôi sẽ cập nhật câu trả lời này nếu tôi tìm hiểu điều gì đó mới.

CẬP NHẬT: Noah từ sự hỗ trợ của Heroku đã trả lời vé của tôi và phần lớn thừa nhận những gì tôi đã nói ở trên. URL repo công khai phải được thay đổi, các bản tin riêng tư phải được xóa hoặc có thông tin đăng nhập được nhúng vào chúng theo tài liệu this; giải pháp thứ hai có phân nhánh bảo mật rõ ràng.

+0

Cảm ơn bạn đã theo dõi điều này. –

+0

Heroku hiện chỉ xuất hiện để chấp nhận các mô-đun con của loại https: //. Xem https://devcenter.heroku.com/articles/git-submodules để biết chi tiết. – jeffjv

1

Hình như câu trả lời này - https://stackoverflow.com/a/8768240 - kể về câu chuyện. Heroku sẽ không chấp nhận các submodules git là repos riêng tư. Phiên bản của tôi của recurly-js là một repo, không tư nhân.

+0

Tôi tin rằng có một sự thay đổi gần đây trong hành vi của Heroku. Chúng tôi có một repo với một số submodules tư nhân và một số công cộng. Cho đến ngày hôm nay, Heroku lấy các mô-đun con công cộng, thất bại trên các cá nhân, và tiếp tục đẩy. Tính đến hôm nay (có lẽ ngày hôm qua), có vẻ như Heroku ngừng triển khai nếu một mô-đun con không thành công. Ngoài ra, chúng tôi nghĩ rằng heroku bắt đầu xử lý repos bằng các URL riêng tư (bắt đầu bằng git @) dưới dạng riêng tư, ngay cả khi chúng được công khai. Hãy xem xét các URL chỉ đọc git (bắt đầu bằng git: //). –

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