我使用protoc編譯時生成php類檔案時
protoc --php_out=xxx xxx.proto xxx.proto ...
出現了一下類似錯誤
可以看到,這些檔案都是沒有變化的,那為什麼會出現這種情況呢?
我使用 cat -A file.proto
檢視檔案的內容和所有特殊符號,對比之前的檔案內容,和protoc編譯生成後的內容;
果然,發現多了 ^M
, 經過查詢,是 LF
和 CRLF
的問題導致的;也就是Linux和windows檔案換行符的不同;
- 先將之前生成的php類檔案,git commit的未變化的檔案都還原;
- 將程式碼編輯器改為預設為
LF
, 怎麼改,具體看自己的IDE設定; - 開啟proto檔案,改為
LF
,我使用的是phpstorm,如下: - 此時,proto檔案內容沒有變更,但是會加入到commit中
- 我們在git中,將這些commit中的檔案還原一下,再次切換到編輯器中檢視,發現檔案是
LF
了,並且也不會在commit中了; - 再次執行之前的protoc 編譯生成命令; 生成的php類檔案,不會再有未變化的存在commit中了;
如果有問題,歡迎德華,彥祖們評論中指出哈
本作品採用《CC 協議》,轉載必須註明作者和本文連結