gpt4 book ai didi

git - 我可以在每个项目的基础上缓存 git 凭据吗?

转载 作者:IT王子 更新时间:2023-10-29 00:42:01 25 4
gpt4 key购买 nike

几个人正在通过网络共享在单个网络服务器上处理多个项目。每个项目都有自己的 git 存储库。在开始一个项目时,我们为从事该项目的每个开发人员提供一个个人开发环境,并为每个项目提供一个暂存环境。所有文件都归 www-data 所有,因为这是 Apache 使用的用户。

为了避免在 pull 、推送和切换到新分支时多次输入用户名和密码,我们目前使用凭证缓存 ( as found here )。

$ git config --global credential.helper
cache --timeout=900

我们面临的问题是,当某人(用户 1)执行经过身份验证的 git 操作时,他们输入了他们的凭据。在超时内,其他人(用户 2)在他们自己的存储库中执行经过身份验证的 git 操作,该操作使用用户 1 的凭据。这将导致以下两种情况之一发生:

  • 用户 2 收到存储库不存在的错误。这是因为用户 1 无权对用户 2 的存储库执行操作。
  • 用户 2 使用用户 1 的帐户推送提交(以他们为作者)。推送显示在用户 1 的历史记录中。

我认为这个问题可以通过将用户名添加到 git 存储库 url(例如 username@git.domain.ext/repo/name.git)来部分缓解,但这只适用于我们个人开发的开始阶段每个用户的环境。暂存环境需要多人访问,所以我们不能硬编码用户名。在我们完成初始开发并且项目上线后,我们清理开发环境,因为我们没有无限的空间。如果我们清理个人开发环境后需要进行更改,我们通常会使用暂存环境来进行更改,这会导致同样的问题发生。

git config --global credential.helper 命令导致凭证在服务器范围内存储。降低超时只有这么多帮助。我们可以改为缓存每个开发环境的凭据吗?

最佳答案

我找不到与您所追求的完全匹配的选项,所以我写了一个:a git credential helper that stores credentials on a per-shell basis .

它为登录时的数据设置一个临时加密 key 和一个临时目录,用于存储git在credential helper processstore阶段给出的用户名和密码。 ,然后在 get 阶段将它们返回。

注意事项:

  1. 我已经对其进行了测试,但仅以相当有限的方式进行了测试。它有效:同一用户的两个单独的登录 shell 可以具有单独的缓存凭据。
  2. 它相当天真:它在存储和检索凭据时忽略 git 提供的任何用户名和 repo URL。
  3. 它会为每次登录留下一个临时目录,其中包含一些小文件。
  4. 它以加密方式存储凭据,但我不保证这在实践中有多安全。
  5. 它需要 Python 3.6、pycrypto 和 bash;我已经在 linux 和 macOS 上测试过了。适应其他设置应该相当容易。

如果遇到任何问题,打开一个问题,我会看看我能做些什么。

关于git - 我可以在每个项目的基础上缓存 git 凭据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com