In the spirit of “simplest thing that works,” my team has a rather low-fidelity approach to code reviews: patch files and e-mail. Nothing fancy, but we find it works rather well. It’s even easier thanks to git format-patch
, which lets me easily generate a patch per commit, but I was never able to get send-email
to work quite like I wanted. Instead, I whipped together a PowerShell script in a few minutes that does just the trick:
function patch ($ref = 'master..', $Message = '', [switch]$KeepFiles) { $patchPaths = $(git format-patch -C -o C:/Temp/Patches $ref) if($patchPaths) { $outlook = New-Object -ComObject Outlook.Application $mail = $outlook.CreateItem(0) [void]$mail.Recipients.Add('myteam@mycompany.com') $mail.Subject = "Review - $Message" $commits = $(git log -C --pretty=format:'%s' --reverse $ref) | foreach { "<li>$_</li>" } $mail.HTMLBody = "<ol style=`"font: 11pt Calibri`">$commits</ol>" $patchPaths | foreach { [void]$mail.Attachments.Add($_) if(!$KeepFiles) { Remove-Item $_ } } $mail.Display() } else { Write-Warning 'Nothing to patch!' } }
Usage:
Create patch of everything on current branch since master:
patch -m "Issue 123 - This is neat"
Create patch of last two commits, without message:
patch HEAD~2..
Create patch of everything except the current commit, with message:
patch master..HEAD~1 'Refactoring for Story 234'