在msysgit中切换分支时恢复只读状态
我希望使用git分支将我的本地更改与团队的主代码分开,后者存储在Perforce存储库中 Perforce在未更改的文件上使用只读标志,如果未设置只读标志,则不会更新已修改的文件,因为我认为我可能已经更改了这些文件,而没有将它们放入更改列表中 我希望主分支上的所有内容都保持只读,并修改其他分支上的文件。签出主分支时,是否可以让msysgit还原还原文件上的只读标志,以便p4可以同步所有内容?您可以使用设置只读标志的bash脚本编写一个 大致如下:在msysgit中切换分支时恢复只读状态,git,branch,perforce,msysgit,Git,Branch,Perforce,Msysgit,我希望使用git分支将我的本地更改与团队的主代码分开,后者存储在Perforce存储库中 Perforce在未更改的文件上使用只读标志,如果未设置只读标志,则不会更新已修改的文件,因为我认为我可能已经更改了这些文件,而没有将它们放入更改列表中 我希望主分支上的所有内容都保持只读,并修改其他分支上的文件。签出主分支时,是否可以让msysgit还原还原文件上的只读标志,以便p4可以同步所有内容?您可以使用设置只读标志的bash脚本编写一个 大致如下: # (flag==1?) &&
# (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
文件夹(通常是隐藏的文件/文件夹?),但您应该检查一下以确定。您可能还希望使用git repo的完整路径,而不仅仅是/*
,这样,无论您在哪个目录/子目录中……它也将有助于了解您使用的是什么平台-Windows和msysgit*尼克斯?Mac?可以给我一个受签出影响的文件列表吗?我希望避免重置从版本控制中排除的文件的只读标志。已更新暴力所有只读脚本;对于受签出影响的文件,您可能会使用类似于chmod-w`git diff index--cached--name only$2`
(因为arg 2是旧的头)的东西,尽管我不知道这是否正是您想要的…谢谢,我感谢您的回答。我只需要比较新旧head和chmod的特定文件。不过,我对bash脚本不是很熟悉。是的,我有点希望其他使用P4并且(非常)熟悉bash的人会加入进来。。。无论如何,您可以执行git diff index--cached--name only HEAD@{1}
来查看当前HEAD(HEAD@{0})和指向的最后一个HEAD之间的差异。。。在分支回到master
后立即执行此操作,您可以看到它将列出哪些文件…当您收到一个命令,列出您希望它列出的文件时,只需将它放在chmod命令的后面两个记号之间,如下所示:chmod-w`command\u to\u list\u files here`
-它将执行该命令并在生成的文件名上运行chmod