- Configure git.
# ~/.config/git/config
[sendemail]
confirm = auto
smtpServer = smtp.gmail.com
smtpServerPort = 587
smtpEncryption = tls
smtpUser = <gmail email address>
- Configure Authentication.
I believe the simplest setup is to create an application-specific password in Google dedicated to git.
Google Account -> Security -> Signing in to Google : App passwords
This password must be configured in git, but should be kept outside of your main gitconfig (which is likely versioned via a dotfile repo?). To do that, I use git's [include]
directive.
# ~/.config/git/config
[include]
path = config.local # (relative or absolute path to the other config file)
# ~/.config/git/config.local
[sendemail]
smtpPass = <app-specific-password>
Alternatively, check out https://github.com/google/gmail-oauth2-tools/tree/master/go/sendgmail which supports authenticating to GMail with OAuth2.
- Determine your revlist.
To send a single commit, just use the sha. To send a range of commits, you can use start_sha..end_sha
. Most likely, you'll want to send the commits made to a branch that are missing in upstream. For that, you would use: upstream/branch_name..branch_name
You can also use relative numbers to indicate the "previous X commits". e.g. git send-email -3
- Send email:
git send-email <revlist> --to <[email protected]>
- If you receive an error like this:
Can't locate Net/SMTP/SSL.pm in @INC (@INC contains: ...
You may need to upgrade/install the Net::SMTP::SSL or IO::Socket::SSL packages:
sudo -H cpan Net::SMTP::SSL
sudo -H cpan IO::Socket::SSL
- Advanced: configure multiple identites. You may configure multiple smtp servers and switch between them with identities.
[sendemail "gmail"]
smtpUser = [email protected]
smtpServer = smtp.gmail.com
[sendemail "outlook"]
smtpUser = [email protected]
smtpServer = smtp.office365.com
[sendemail]
identity = outlook
Note: I couldn't make an app password, and kept getting junk ilke this despite repeatedly visiting the link and verifying my identity:
The solution was:
A) posted a complaint on the google help forums at https://productforums.google.com/forum/#!forum/gmail ... I didn't get a reply, but after my post my account magically let me through some of the issues
B) log into my account from a local system, with no proxy (I was using Tor before)
C) enable 2-factor authentication
D) now, I could generate an app password and log in using git send-email (even from tor!) !