Kể từ vài ngày trước, mỗi khi tôi bắt đầu Git GUI trong một kho lưu trữ, nó sẽ hiển thị thông báo lỗi khủng khiếp này và bỏ sau khi tôi nhấn OK:Git GUI treo mỗi khi nó mở ra một kho lưu trữ
prepare-commit-msg hook failed:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
You must correct the above errors before committing.
Nó chỉ xảy ra với Git GUI và chỉ khi trong kho (cũ hoặc mới được tạo). Các lệnh phổ biến trong Git Bash bao gồm cả việc commit tốt.
Gỡ cài đặt và cài đặt lại với gói mới hơn (chỉ thay đổi phiên bản nhỏ) đã không xóa sự cố. Nó vẫn xảy ra với các kho cũ cũng như với các kho lưu trữ mới được tạo ra.
Trên một máy sạch, vấn đề này không tái tạo, vì vậy tôi đoán nó là cái gì đó trên hộp của tôi, nhưng tôi không nhớ cài đặt bất cứ điều gì buồn cười. Tôi nhớ là đã tắt hộp của mình sau một thời gian dài, vì vậy có lẽ một số Windows Update có thể đã kích hoạt điều này - điều đó cũng giải thích tại sao máy kia không bị ảnh hưởng - đó là 2-3 tháng kể từ lần cập nhật cuối cùng ở đó.
Bất kỳ ý tưởng nào về cách làm sáng tỏ điều này? (Như tôi chỉ có thể nhìn thấy nó trên máy tính duy nhất, tôi không cảm thấy như gửi nó để theo dõi chính thức trước khi tôi biết đó không phải lỗi của tôi ứng dụng/khác ...)
Cập nhật sau bình luận đầu tiên:
-
Nếu bạn xóa hoặc đổi tên tập lệnh móc, nó có hoạt động không?
Hài hước đủ, nhưng tập lệnh móc thực sự không tồn tại chút nào (không có tập lệnh móc là hiện tại - chỉ có * .sample tệp trong .git \ hooks). Thậm chí ở những nơi khác (git chương trình dir vv)
-
vết nó để bạn biết những gì lệnh nó chạy - từ git-bash chạy
git gui --trace
Thật đáng buồn này bất cứ điều gì không ra vào vỏ . Hành vi là như nhau.
-
Có thể lấy gdb trong đó.
Tôi đã thử nhưng gdb không xuất ra bất kỳ điều gì hữu ích. Tuy nhiên, tôi không có bất kỳ kinh nghiệm với GDB, tôi có thể làm sai. Tôi nhận được một MinGW's gdb, chạy nó từ dấu nhắc lệnh với git.exe làm đối số và sau đó chạy
run gui
. gdb không ra bất cứ điều gì thú vị:(gdb) run gui Starting program: C:\Program Files (x86)\Git\bin\git.exe gu [New Thread 8264.0x1ce4] [New Thread 8264.0x394] [Inferior 1 (process 8264) exited with code 01] (gdb)
Nhưng tôi gần như chắc chắn tôi đang làm nó sai, vì vậy lời khuyên là chào đón nhiều hơn :)
-
Hãy chắc chắn rằng bạn không có Cygwin được cài đặt hoặc ít nhất là nó không có trong số PATH của bạn tại tất cả
Tôi đã cài đặt Cygwin (như tôi luôn có trước khi git bị hỏng).Từ Cygwin, tôi chỉ có có trong một số đường dẫn * .bat và một số tệp * .dll, nhưng tôi đã kiểm tra với ProcMon rằng nó không chạm vào chúng và thậm chí nếu tôi xóa chúng khỏi đường dẫn, tôi vẫn nhận được sự cố tương tự.
Nếu bạn loại bỏ hoặc đổi tên kịch bản móc, nó hoạt động? '.git/hooks/preparation-commit-msg' – fork0
Theo dõi nó để bạn biết lệnh nào nó chạy - từ git-bash chạy' git gui --trace'. Khi nó chạy lệnh chuẩn bị-commit-hook, nó sẽ phát ra lệnh mà nó chạy và bạn có thể xem lệnh đó để biết thêm thông tin gỡ rối. Có thể lấy gdb ở đó. Thực tế là nó phàn nàn về đống Cygwin là đáng ngờ. Hãy chắc chắn rằng bạn không có Cygwin được cài đặt hoặc ít nhất là nó không có trong PATH của bạn cả. Cygwin và msys không trộn lẫn. – patthoyts
@patthoyts, fork0 Cảm ơn con trỏ, đã cập nhật Q với câu trả lời –