我的基於Perforce的項目支持Linux和Cygwin平臺使用相同的shell腳本(例如build_project.sh
)。但Perforce將文本文件的行結尾默認爲本地平臺(Docs)。這導致.sh
腳本中的\r\n
換行符在Cygwin上失敗。Perforce每個文件的結尾
一些我認爲到目前爲止的想法:
有沒有一種方法,使Cygwin的接受\ r \ n個文件?(無需運行
dos2unix
,文件將作爲只讀文件提取)。有沒有辦法將特定的文件設置爲文本,但是對於每個人來說,Unix行結尾?(我猜測,「沒有」,但認爲我會檢查。)
當然,我可以設置整個工作區的行結束
\n
(UNIX)中。但是,這使得Windows客戶端不滿意.bat
文件是\n
而不是\r\n
。此外,如果設置是每個工作區(我無法調出),那麼對於新的Windows用戶,工作區設置稍微難一些,因爲他們必須設置該選項。將
.sh
文件設置爲「二進制」,但後來我們在這些文件上丟失了文本差異。 有沒有解決方法?這是常見的(良)黑客?
這是一個相當小的挑剔,但我懷疑你們中的一些有BKM此模式。
謝謝。
編輯:克雷格在this question的答案似乎表明,如果它們最初是以這種方式提交的話,那麼使用Unix行結尾將僅僅保留具有\r\n
的文件。
編輯:要強制bash(即Cygwin)接受帶有\r\n
結尾的文件,可以在腳本中指定set -o igncr
。如果希望Cygwin用戶可能不是非常熟悉Unix的人(我的情況),或者出於某種其他原因無法在下面的解決方案中全局強制觸發器時,這很好。