【问题标题】:Git: how can a team pull and push to the repo from the test serverGit:团队如何从测试服务器拉取和推送到 repo
【发布时间】:2012-01-20 02:52:08
【问题描述】:

我想这是一个最佳实践问题:

我们有一个测试服务器、一个 git 存储库和几个工作站。 当我们进行浏览器测试时,我们直接在测试服务器上工作。 因此,无论谁进行浏览器测试,他/她都必须能够将更改从测试服务器提交到存储库。 问题是:git 远程(在测试服务器上)指定一个用户从/向 repo 拉/推(在 .git/config 中)。尽管每个团队成员都有一个用于 repo 的 ssh 用户。

问题是:每个用户如何利用他/她自己的 ssh 访问来进行 git pull/push?

【问题讨论】:

    标签: git unix permissions ssh


    【解决方案1】:

    尝试在测试服务器上的克隆中指定不带用户名的 git repo url(您可以在配置中更改它或只是重新克隆)。它将使 git 使用该 url 中主机的默认 ssh 用户名。

    根据您的设置,您可能需要为每个用户额外修改~/.ssh/config

    更新

    如果每个人都在您的测试服务器上使用同一个用户登录(我不推荐这种设置),那么看起来您必须以一种或另一种方式破解。

    一种可能的方法是这样(我没有尝试过):

    如果您担心user.nameuser.email,请允许测试服务器用户访问主git repo 并强制每个用户设置GIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL(可能还有一些others)环境变量登录。

    出于显而易见的原因,在某些脚本中这样做是有意义的,而不是在 .bashrc 或类似的脚本中。

    为了保护自己免受健忘用户的伤害,您可能需要在 git clone 中设置 pre-commit 钩子,用户在其中执行提交以检查脚本是否被调用(例如,通过环境变量)。或者,在主 git 存储库上设置接收后脚本,并在那里检查推送提交中的用户凭据不是测试服务器用户的凭据。在这种情况下,用户将不得不重写历史记录来修复提交作者。

    如果这还不够,请分享更多细节。

    【讨论】:

    • "它将使 git 使用该 url 中主机的默认 ssh 用户名。"是的,这就是问题所在:我们只使用一个用户用于测试环境,但有几个用户用于访问 repo。所以我希望 Git 询问我每次拉/推的用户/密码组合。这可能吗?
    • 那么,每个人都在测试服务器上使用相同的操作系统用户,对吗?
    • 用一种可能的单操作系统用户解决方案更新了我的答案
    • 正确!但是,通过阅读您的扩展说明,我意识到这(在测试服务器上使用一个操作系统用户)似乎确实不是一个好习惯。我不能告诉你为什么我们认为我们应该这样做。我认为这类似于“好的,但如果我们拉动不同的用户,很多文件将拥有不同的所有权......”
    【解决方案2】:

    提交时可以指定作者。示例git commit --author="Author Name <email@address.com>"

    更好的方法是强制用户提供作者。在您的 ~/.bashrc~/.profile 创建以下函数 -

    function gitco() { /usr/local/git/bin/git commit --author="$1"; }
    

    当用户提交时要求他们运行gitco <email address>。如果没有电子邮件地址,gitco 将失败。

    例子:

    gitco me@me.abcdf
    

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 2013-06-04
      • 2013-03-10
      • 2014-02-02
      • 1970-01-01
      • 2013-01-23
      • 2017-02-15
      • 2017-11-14
      • 2018-10-25
      相关资源
      最近更新 更多