下面是一个场景:一台Windows PC正在运行自动硬件测试的测试软件。控制测试的代码在Git存储库中进行管理。有一个单一的、通用的登录,其密码为所有测试操作员所知。
我该如何设置它,以便当用户想要进行提交时,它会询问他们的用户名和电子邮件,或者他们可以在每次提交时提供用户名和电子邮件?我们需要追踪是谁做出了改变。有时热更改是必要的,我们希望确保所有影响测试的文件的状态都保留在存储库中。
请不要建议对基本配置进行更改,也不要建议每个用户在一个单独的目录中工作,然后进行合并——这些工作流将无法满足测试的需要。常见的登录是因为在用户之间切换的过程会关闭运行测试的软件,并可能导致损坏或测试失败。如果没有解决方案,我们将被迫恢复到SVN。。。没有人想要那样。
您可以在每次运行git commit
时指定作者姓名和电子邮件,如下所示:
git -c user.name='Alex Court' -c user.email=alex@example.com commit
您可能需要确保您的.gitconfig
文件没有配置任何名称或电子邮件,这样,如果有人忘记了,git就不会使用这些名称或电子邮件。或者,您可能想要编写一个包装器脚本,以更交互式的方式提示用户。
@JohnZwinck的答案有效,另一个有不同小不便的选择是让人们做,例如
export GIT_COMMITTER_NAME='John Kugelman' GIT_COMMITTER_EMAIL=johnk@example.com
您可以在登录配置文件中设置一个名为hi,im
的shell函数,从列表中设置这些函数,比如(手指到文本框(:
hi,im() { match=`grep "$*"` ~/namelist
local nmatch=`printf %s "$match"|wc -l`
test $nmatch = 1
|| { echo "$match"; echo need one match for "$*" in ~/namelist; exit; }
eval $match
}
其中CCD_ 4包含如上所述的导出。如果你是唯一的johnk
,那么在开始跑步时你就只能是hi,im johnk
。在提示字符串中包含$GIT_COMMITTER_NAME
,最简单的方法是export PS1='$GIT_COMMITTER_NAME$ '
,在每次提示时都包含当前人员的姓名作为提醒。
然后,如果提示中有您的姓名,您可以照常操作,否则hi,im jthill