2012-01-27 23 views

Trả lời

28

MSYS không phải là vấn đề. Ngay cả khi MSYS chmod không hoạt động (nó không hoạt động), Git có cách tích hợp để giải quyết vấn đề đó, tức là git update-index --chmod=+x. Hãy để nó được rõ ràng rằng git update-index chỉ messes với chỉ số (dàn khu vực), không phải là kho lưu trữ địa phương (thư mục làm việc).

Tôi tin rằng vấn đề là với GitHub. Trên GitHub nếu tệp là ban đầu được đẩy với chế độ 100775, tất cả đều tốt. Nếu một tệp là thì ban đầu được đẩy là 100644 nó gây ra sự cố. Nỗ lực thay đổi chế độ tệp sẽ thành công với git add, thành công với git commit, thành công với git push và thậm chí hiển thị trong lịch sử tệp GitHub, nhưng không phải là được phản ánh trên trang "blob/master" trên GitHub.

Cập nhật

Từ: Petros Amiridis (GitHub Staff)

Chủ đề: Làm thế nào để thay đổi chế độ tập tin trên GitHub?

Tôi có một số tin vui. Nhóm tuyệt vời của chúng tôi vừa xác nhận đó là lỗi bộ nhớ đệm về phía chúng tôi. Nhóm của chúng tôi đã triển khai bản sửa lỗi.

11

Tôi nghĩ rằng vấn đề là MSYS, trên đó triển khai Windows git dựa trên, không xử lý đúng cách chmod.

(EDIT: Câu trả lời khác nói MSYS không phải là vấn đề, mà chắc chắn có vẻ hợp lý.)

tôi đoán là các lệnh

git update-index --add --chmod=+x test-file 

công trình bằng cách cập nhật siêu dữ liệu trong kho lưu trữ cục bộ (sẽ hoạt động) và thay đổi quyền trên tệp (không có), đặt kho lưu trữ cục bộ vào trạng thái không nhất quán.

Bạn sẽ có thể trở lại trên này bằng việc lùi lại update-index:

git update-index --add --chmod=-x test-file 
git commit -m 'change mode back' 
git push 

để có được kho trở thành một nhà nước thống nhất, và sau đó làm cho sự thay đổi trong một bản sao không phải là Windows của kho. Nếu bạn không có quyền truy cập vào Linux hoặc hệ thống giống Unix khác, Cygwin bao gồm git (không theo mặc định, nhưng bạn có thể cài đặt nó qua setup.exe) và cung cấp cho bạn môi trường trong đó chmod thực sự hoạt động. Vỏ mặc định cho Cygwin là bash, vì vậy môi trường nên quen thuộc nếu bạn đã sử dụng git bash.

Tệp vẫn không có vẻ thực thi được khi bạn xem nó từ git bash shell, nhưng nó sẽ hiển thị dưới dạng 100755 trong giao diện web GitHub.

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