保护文件我有,我想从其他用户正在改变(推)来保护文件的一个子集的中央存储库。如果我这些文件添加到.gitignore
,他们不会被克隆。在git仓库
是否有可能给克隆所有文件的能力,但克隆他们中的一些添加到.gitignore
在客户端后?
保护文件我有,我想从其他用户正在改变(推)来保护文件的一个子集的中央存储库。如果我这些文件添加到.gitignore
,他们不会被克隆。在git仓库
是否有可能给克隆所有文件的能力,但克隆他们中的一些添加到.gitignore
在客户端后?
我最初以为大约filter driver(见Pro Book),这将:
但是,这不是一个很好的解决方案,因为这些脚本是约无国籍文件内容转型(见this SO answer)。
你可以尝试在挂钩中强制执行一个保存/恢复机制(请参阅相同的答案),但请注意它将在本地回购(它只会保护您的文件在回购库中,挂钩不会被推送)
您还可以使用:
git update-index --assume-unchanged file
请参阅 “With git, temporary exclude a changed tracked file from commit in command line”,又只是一个地方保护。这会保护他们免受外部推到你的回购协议(“进口”),但如果你把它们发布(“出口”),可以比在客户端进行修改。
有原因的Git本身必须回答这个特殊的理由?
如何使文件为只读,并指定为政策这些文件不应推送?
有时一个技术解决方案是不是最简单的方法。
如果有人确实将更改推送到这些文件,则始终可以恢复这些更改。
您可以将文件存储库中的,提交他们,然后将它们添加到的.gitignore,然后从下删除它们提交。
您仍然可以在提交之前直接抓取文件(也许可以用一些东西来标记它,这样可以更容易地通过名称获取它),这样可以保留文件的状态,但不会在存储库中轻松进行编辑事故。
拉动克隆后访问这些文件,只写获取他们为你的资料库的用户rake任务。
这听起来好像问题出在其它地方,如果你需要这种级别的访问限制。
不过,如果你真的不想要实现这一点,考虑Gitolite。它允许你定义,而详细的访问规则,或许应该足以满足您的需求。
Gitolite文档:http://gitolite.com/gitolite/master-toc.html
可以定义“虚拟裁判”来控制文件级别的访问。更多关于:http://gitolite.com/gitolite/vref.html
.gitignore是否被提交到存储库?你为什么要保护这些文件? .gitignore是否会添加任何类型的每个用户的访问权限,或者您的更改是否意味着* nobody *可以更改这些文件?你想达到什么目的? – 2010-07-29 06:50:54
它会是一个简单的拒绝修改这些文件的推送选项吗?你也可以提供一个客户端钩子来拒绝坏提交。 – Cascabel 2010-07-29 12:25:48