【问题标题】:Best pracitces for multi-developer Git for single user application单用户应用程序的多开发人员 Git 最佳实践
【发布时间】:2020-08-24 04:48:44
【问题描述】:

我负责一个相当古老的应用程序,我们正试图将现代工具包装起来。

该应用程序是基于 Linux 的数据处理应用程序。它接收一些数据,进行一些复杂的分析/模拟,并有一个简单的 Web/CSV 界面。

我们运行这个的多个实例,一个用于我们的每个客户端,其中核心相同,并且我们编写了一些我们存储在 Git 中的帮助程序/包装器脚本。此外,我们可以在 Git 中添加尽可能多的配置文件。

核心应用需要以服务Linux用户的身份运行,每个开发者都很难创建一个实例,所以我们每个客户端一个测试实例,每个客户端一个生产实例。

我们所有的代码都存储在 GitLab 中,因此我们将其全部推送到远程存储库。我们将配置从远程拉到生产机器。

一般架构是:

              GitLab
             /      \
            /        \
       Dev box      Prod box
       ~app1/       ~app1/ 
       ~app2/       ~app2/ 
       ~app3/       ~app3/

我们的团队由 5 人组成。每个人通常在 ~appN 环境之一中工作,但人们会四处走动。我们希望 Dev 和 GitLab 中的本地提交历史能够反映进行更改的实际人。

我正在为此寻找最佳做法。现在我们正在做的事情感觉并不理想。这是我们的工作:

每个开发人员(我们称我们的示例开发人员 Bob)作为 Linux 用户 ~appN 在 Dev box 上开发和测试更改。一旦他们的更改看起来不错,他们就会将更改的文件复制到他们自己的主目录 ~bob/ 中的 repo 的克隆中。他们从这个位置进行提交和推送,这会将他们的名字附加到提交中。为了确认所有内容都已提交并正确推送,他们返回 ~appN 并执行以下操作:

git stash
git pull
git stash pop

如果这是干净的,那么他们就知道所有内容都已提交并推送到远程仓库。如果它不干净,就会遗漏一些东西。

显然,我们正在做的事情是复杂的、容易出错的和混乱的。我对如何解决它有一些想法,但我希望专家能够提供一些关于在这种环境中开发的最佳方法的见解。

提前致谢。

【问题讨论】:

    标签: git gitlab


    【解决方案1】:

    每个开发人员(我们称之为示例开发人员 Bob)在 Dev 框上以 Linux 用户 ~appN 的身份工作,以开发和测试更改。

    这就是我开发VonC/gitw 的原因,这是一个 git 包装脚本,它会强制你在执行 git 命令时被正确识别。

    这样,您不必将在共享环境(Linux,具有通用服务帐户)中完成的代码复制回您的 PC、进行提交和推送。
    您可以直接进行这些更改,就像您在共享环境中提交和推送一样。


    OP 45th Percentile 加上in the comments

    出于合规性原因,我们需要能够将提交绑定到经过身份验证的用户

    这是一个正交问题,涉及到autosigning commits with GPG keys
    在您的情况下,您将完成 git 包装器,以便为给定用户设置 config user.signingkek,并引用要使用的正确键。

    你可以看到文章“How To Sign Your Commits On GitHub With GPG.”(来自Mpho Mphego)中说明的所有过程,但想法仍然存在:在第一次提交时,用户(通过gitw正确识别)必须输入与他们的密钥相关联的密码:

    注意with git 2.19 or more,你也可以使用x509 format签名,而不仅仅是opengpg。

    【讨论】:

    • 感谢这对我提出的问题很有帮助。我一直在考虑您的解决方案,以及我的一般问题,看起来还有另一个复杂性 - 出于合规性原因,我们需要能够将提交绑定到经过身份验证的用户。在您的解决方案中,任何人都可以声称自己是其他人吗?这似乎是一个我没有好的解决方案的普遍问题。
    • @45thPercentile 这是一个已知问题,有解决方案。请参阅我编辑的答案来解决您的评论。
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2011-11-24
    • 2011-11-02
    • 1970-01-01
    • 2010-11-27
    • 2021-03-30
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多