- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我们使用托管在远程位置并共享的 git 存储库。我们希望 repo 是用户和组可读和可写的,但对其他人没有任何权限。远程仓库由不同的用户(比如 rUser)拥有。我已经在本地仓库和远程仓库中将 core.sharedRepository
设置为 0660
。另外,我的 umask 是 0027
。因此,每当我创建一个新文件时,它都没有其他文件的权限。
尽管如此,出于某种原因,每当我将更改推送到远程仓库时,它都会在 repo.git/objects/
目录中创建一些具有权限 -r 的新对象--r--r--
。更奇怪的是,它使我(而不是远程用户)成为目录/文件的所有者。知道发生了什么事吗?
我试图通过在 stackoverflow 上查看几个看似相关的问题来找到答案,但找不到任何答案。
最佳答案
注意:我假设您正在使用基于 SSH 的访问机制,每个用户都以自己的用户身份登录服务器(即,您没有多个用户登录到一个帐户来访问存储库)。如果这个假设不成立,那么以下答案可能不会完全有用。
您个人存储库的 core.sharedrepository
设置和您用来访问它的 umask 与远程存储库上使用的所有权和权限无关。
在远程存储库中将 core.sharedrepository
设置为 0660
是获得您想要的内容的正确方法。远程访问用户的 umask 也无关紧要,因为 Git 会在看到 core.sharedrepository
的 0xxx
值时覆盖掩码.您确实需要确保所有文件和目录都由您的公共(public)组拥有,并且权限正确(所有目录都为 2770
(或者只是 770
BSD-ish 系统);440
对于 objects/??
和 /objects/pack/
下的文件;660
用于其他文件)。
创建文件的用户拥有新文件是正常的。在非 BSD 系统上,您需要目录上的 setgid 位(2000
位)以使新条目继承其父目录的组所有者。 user-owner 很少被继承(FreeBSD 可以配置为使用 setuid 位来完成它,但这在正常配置中不使用)。因此,所有文件和目录都应该有相同的、共同的、组所有者,但是每次写入存储库(例如推送)都会留下一些文件和/或目录,这些文件和/或目录由写入用户拥有1(即不要求任何一个用户(您的 rUser
?)是所有文件和目录的用户所有者;任何需要访问存储库的用户都应该是普通组)。
<子>1每个用户显然都会拥有他们创建的任何文件/目录,但他们也会拥有他们修改的大部分文件,因为 Git 使用“原子重写”(它将新内容写入同一目录中的新的单独文件,然后在原始文件之上重命名它)。
Git 覆盖新文件的 umask 的方式可能存在错误。究竟哪些文件获得的权限太宽?您在远程端访问存储库的 Git 版本是什么?您在远程端运行什么操作系统?
我无法使用 Git 1.7.4.1 在我的 Unixy 机器上使用两个用户和一个公共(public)组重现此问题。
您可以尝试稍微简化一下场景。尝试直接从服务器本身推送到远程存储库(即制作本地克隆并推送到一次性分支)。与在中间进行某种传输相比,进行仅本地访问可以更容易地检查您的假设(umask;uid;gids;用户和组所有权,以及文件和目录在推送之前和之后的权限) (Git 自己的基于 SSH 的传输,或者可能无法完全保真地映射 ID 和权限的网络文件系统)。
关于git - 让 git push 尊重权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264968/
我的团队正在使用 gerrit 代码审查,本质上这意味着默认的推送行为会绕过标准工作流程,因此我们需要使用 git push origin HEAD:refs/for/feature 来正确推送我们的
我是 assembly 新手,我正在使用 MASM。我看到这些代码行,想知道这之间有什么区别 a) push myVar b) push [myVar] c) push OFFSET myVar 我怎
美好的一天! 将镜像推送到docker hub时遇到一些问题。我的第一个软件版本: vagrant@debian-8-docker:~$ docker version Client version:
我有三个 Controller 一二三 .首先是navigationController的rootViewController。 在 SecondViewController ,我有一个名为 的协议(
我在这个 Google 教程的帮助下实现了一个 Web Push API: https://developers.google.com/web/fundamentals/getting-started
我有两个模式: var optionsSchema = new Schema({ locationname: String, locationnumber : String
我是 git 的新手并对其进行了测试。我已经能够克隆 friend 存储库进行小的本地更改并提交。 我现在想测试将我的本地更改推送到远程存储库,但不幸的是当我尝试进行推送时 $ git push <
我们正在公司讨论 git rebase 之后该做什么。在rebase之后,您需要将更改推送到远程origin,但是当git不允许时我们应该怎么做呢?实际上,我们正在讨论当分支已经被推送时我们最常用的两
我正在使用具有嵌入式 github 支持的新 IDE。在命令行本地,我可以成功地使用 git push orgin master 并更新 github。但是我的 IDE 使用带有 -v 标志的命令,这
我仍在阅读有关 RoR 的一些指南,我被困在 Deploying The Demo App 上 我遵循了说明: With the completion of the Microposts resour
我正在尝试创建一个可以将我的 git 存储库镜像到另一个存储库的脚本。一切正常,但它一直在说 [remote rejected] refs/pull/xx/head -> refs/pull/xx/h
我想了解使用 Tortoise SVN 构建过程的一些过程。主要是 我想知道你是否插入: 主线中继 QA 后的一个分支将其抓取到本地的工作副本中并测试该分支,然后一些构建推送该分支 我遇到的问题是我在
在谈论将消息推送到移动应用程序以触发 WAP 内容的下载时,似乎都使用了 WAP 推送和 SMS 推送这两个术语。 这些术语是指相同的机制还是具有不同的含义? 最佳答案 SMS Push 是告诉终端发
我只是想知道是否有人使用这种技术: 由于推送通知仅随 OS 3.0 一起提供,因此我一直在考虑使用电子邮件推送(Exchange、mobile.me)作为解决方法: 您可以注册一个 URL,例如。 m
我正在 build WP website using DIVI theme .应该被插入 dataLayer 的标签被默认的“未设置”值卡在某个地方。 为了推送我使用脚本的值: functi
我最近删除了xcode 6 beta 3并安装了xcode 6 beta 6 当我在终端输入gitpush时,这发生了 xcrun:错误: Activity 的开发人员路径(“/Application
我即将实现ionic-native Push Notifications .这可以在浏览器中运行吗?还是我需要安装 iOS/Android 模拟器? 最佳答案 除非您使用 Phonegap 推送服务器
Safari 12.1 是否支持服务 worker PWA 推送通知?我试过这个 demo在 iOS 上,但它仍然不适合我。 有机会得到它们吗?谢谢。 最佳答案 目前没有关于此功能的通信...Appl
目前我有很多 chrome 浏览器的推送订阅都是这样的方法, swr.pushManager.subscribe({userVisibleOnly: true}) .then(function
我需要 4 个过渡效果,但我只知道 2 个过渡效果,还有 2 个我不知道。我知道的 2 个过渡动画是: 过渡时下推: 并向下推过渡: 但
我是一名优秀的程序员,十分优秀!