2011-09-06 46 views
2

切換分支時我想使用的Git分支到我的局部變化,從球隊的頭碼,存儲在一個Perforce代碼庫中分離只讀狀態。恢復在msysgit

Perforce的使用上保持不變的文件只讀標誌,並不會更新修改的文​​件,如果沒有設置只讀標誌,以爲我可能已經改變了他們沒有把它們變成一個變更。

我想保留一切只讀在主分支和修改其他分支上的文件。是否有可能使msysgit在檢出主分支時恢復已恢復文件的只讀標誌,以便p4可以同步所有內容?

+0

這也將有助於瞭解你所使用的平臺 - Windows與msysgit? * nix中?蘋果電腦? – johnny

+0

Windows 7上的msysgit。 –

回答

3

你可以寫一個bash腳本,設置只讀標誌一個git post-checkout hook ...

線沿線的東西:

# (flag==1?) && (HEAD == master) ? 
if [ $3 == 1 ] && [ `git symbolic-ref -q HEAD` == "refs/heads/master" ] 
then 
    # make everything in the given directory (recursively) read-only: 
    chmod -w [ path_to_repo | . ]/* -R 
fi 

它看起來像./*跳過.git文件夾(隱藏文件/文件夾一般?),但你應該檢查一下確定。你可能也想使用完整路徑混帳回購協議,而不是僅僅./*,使其不要緊,你是哪個DIR /子目錄中......

+0

我可以列出受結帳影響的文件列表嗎?我想避免重置從版本控制中排除的文件的只讀標誌。 –

+0

更新了蠻力全部只讀腳本;對於受結賬影響的文件,你可能會使用'chmod -w''git diff-index --cached --name-only $ 2'(因爲arg 2是OLD_HEAD)米如果沒有*確切*你想要它... – johnny

+0

謝謝,我感謝你的答案。我將需要做新老頭和chmod只有特定文件的比較。不過,我並不是很熟悉bash腳本。 –