Travis CI, for example, uses the email in the git commit for notification.
~/.gitconfig
[organization "git@github.com:myproject1"] email = myname@project1.com [organization "git@github.com:myproject2"] email = myname@project2.com [organization "git@github.com:personal"] email = myname@personal.com
.bashrc
alias git=git-org.sh
~/bin/git-org.sh
#!/bin/sh
ORG=$(git-org.php)
if [[ ! -z "$ORG" ]]; then
ORG_EMAIL=$(/usr/local/bin/git config organization.$ORG.email)
if [[ ! -z "$ORG_EMAIL" ]]; then
EMAIL=$(/usr/local/bin/git config user.email)
if [[ "$EMAIL" != "$ORG_EMAIL" ]]; then
echo "User mail is: $EMAIL"
echo "Organization mail should be: $ORG_EMAIL"
echo "Switching to email: $ORG_EMAIL"
$(/usr/local/bin/git config user.email $ORG_EMAIL)
fi
fi
fi
/usr/local/bin/git "$@"
~/bin/git-org.php
#!/usr/local/bin/php
/dev/null`;
if (!$remote) {
exit;
}
$url = null;
$lines = explode("\n", $remote);
foreach ($lines as $line) {
if (preg_match('/origin\s+(.*?)\s+\(fetch\)$/', $line, $matches)) {
$url = $matches[1];
break;
}
}
if (!$url) {
exit;
}
$parsed = parse_url($url);
if (!isset($parsed['scheme'])) {
$pos = strpos($url, ':');
if ($pos !== false) {
$url = substr_replace($url, '/', $pos, 1);
$url = 'git://' . $url;
$parsed = parse_url($url);
}
else {
exit;
}
}
$user = $parsed['user'] ?? '';
$host = $parsed['host'] ?? '';
list($org) = explode('/', ltrim($parsed['path'] ?? '', '/'), 2);
print "$user@$host:$org\n";
Ingen kommentarer:
Send en kommentar