根据某个子目录选择git存储库的作者凭据

时间:2011-12-12 23:29:13

标签: git bash

我同时为不同的雇主工作。我必须在雇主提交的基础上使用不同的凭证。我可以在每个存储库中轻松运行git config author.emailgit config author.name。但我想在全球范围内开展这项工作,因为每个雇主都有很多存储库,新的存储库经常出现。

我将所有存储库安排在两个文件夹中。即~/projects/<employer_name1>/<project_name>~/projects/<employer_name2>/<project_name>

所以我想做的是让git根据当前存储库的位置(它是哪个雇主子目录)自动选择正确的提交凭据。

自己找到答案。将此添加到.bashrc:

function git() {
  case $(readlink -f .)/ in 
    $(readlink -f /home/cryo/projects/fun-box)/*) GIT_AUTHOR_NAME=my_name GIT_AUTHOR_EMAIL=my@email.com /usr/bin/git $*;;
    *) /usr/bin/git $*;;
  esac
}

3 个答案:

答案 0 :(得分:2)

有一个集中的机制来创建回购。就像您路径中的某些脚本一样:

repo create -e employer -n name

或类似的东西。

repo命令(只是一个例子,与Android中的一个无关)将在必要的位置为您创建回购并读取配置文件并根据雇主等设置该回购的凭据。

答案 1 :(得分:0)

您可以在repo级别的任何其他设置中设置user.name和user.email。如果你愿意,只需编写脚本即可。

答案 2 :(得分:0)

为每位雇主添加顶级回购。使每个新项目成为此repo的子模块。这样您就不必担心从现在开始每个项目的名称和电子邮件设置。