Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在msysgit中切换分支时恢复只读状态_Git_Branch_Perforce_Msysgit - Fatal编程技术网

在msysgit中切换分支时恢复只读状态

在msysgit中切换分支时恢复只读状态,git,branch,perforce,msysgit,Git,Branch,Perforce,Msysgit,我希望使用git分支将我的本地更改与团队的主代码分开,后者存储在Perforce存储库中 Perforce在未更改的文件上使用只读标志,如果未设置只读标志,则不会更新已修改的文件,因为我认为我可能已经更改了这些文件,而没有将它们放入更改列表中 我希望主分支上的所有内容都保持只读,并修改其他分支上的文件。签出主分支时,是否可以让msysgit还原还原文件上的只读标志,以便p4可以同步所有内容?您可以使用设置只读标志的bash脚本编写一个 大致如下: # (flag==1?) &&

我希望使用git分支将我的本地更改与团队的主代码分开,后者存储在Perforce存储库中

Perforce在未更改的文件上使用只读标志,如果未设置只读标志,则不会更新已修改的文件,因为我认为我可能已经更改了这些文件,而没有将它们放入更改列表中

我希望主分支上的所有内容都保持只读,并修改其他分支上的文件。签出主分支时,是否可以让msysgit还原还原文件上的只读标志,以便p4可以同步所有内容?

您可以使用设置只读标志的bash脚本编写一个

大致如下:

# (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