[英]Folder capitalization not changing on branch switch
我正在處理一個 python 項目,想將一個(包)文件夾重命名為小寫字母,假設從Myackage
到mypackage
。 由於 git 區分大小寫而 Windows 不區分大小寫,因此我遵循了從這里和特別是這里獲取的解決方案。
我的程序如下:
git mv Mypackage tmp
git mv tmp mypackage
git commit -m "Change capitalization of package name"
這成功地將文件夾Myackage
更改為mypackage
(對於 git 和 Windows)。 但是如果我切換到另一個分支,我希望文件夾會變回Mypackage
(用大寫字母!),就像以前一樣。 背景是,包的所有導入在 python 中也是區分大小寫的,我需要這個 renamng 伴隨着導入的適應。
我已經嘗試了兩者, core.ignorecase
設置為true
和false
,但無論我嘗試什么,如果我簽出一個較舊的分支,文件夾仍然是小寫字母( mypackage
)的形式,並且我在 python 中遇到了問題。
更新:我已經設置了一個只有一個文件夾和一個文件的小示例,並且可以成功更改文件夾的大小寫。 它還顯示了所需的行為,即在分支切換時 Windows 中文件夾的大小寫發生變化,但這仍然不適用於我的 python 項目。
難道,例如,子模塊,在這里發揮作用嗎?
更新 2:我已經通過以下方式檢查了兩種情況的case sensitivity
屬性:
fsutil.exe file queryCaseSensitiveInfo .
兩個文件夾都聲稱不區分大小寫。 仍然為一個項目文件夾名稱大寫更改,但對於另一個文件夾沒有。
我找到了一種重現您行為的方法:
如果我的 CaSeD 文件夾包含一些額外的文件(例如未跟蹤的文件),當我在提交之間跳轉時,git 不會更改我的文件夾名稱的大小寫。
您的設置是這種情況嗎?
如果這是您的問題:您可以使用post-checkout
掛鈎,它會根據結帳后存儲在HEAD
內容強制重命名文件夾。
從提交HEAD
獲取目錄路徑的完整列表的一種方法是:
git ls-tree --name-only -d -r HEAD
如果將此列表與從本地文件系統中提取的類似列表( ls -r
? find . -type d
?來自os.*
一些 python 函數?)匹配,您可以發現哪些文件夾需要重新調整大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.