commit message file</em> with text from the git message template.</p>
In this script, we can now dynamically run every command we want to get the context need, and put it into the commit message file before opening the file in our editor.</p>
Currently, my git commit wrapper looks like this:</p>
#!/bin/sh</span></span>
set</span> -e</span></span>
</span>
COMMIT_MSG_FILE</span>="</span>$1</span>"</span></span>
</span>
# Show the latest 10 commits</span></span>
{</span></span>
echo</span> ""</span></span>
echo</span> "</span># Recent commits:</span>"</span></span>
git</span> log</span> --pretty=format:</span>"</span>%s</span>"</span> -n 10</span> | while</span> read</span> -r</span> line</span>; do</span></span>
echo</span> "</span># </span>$line</span>"</span></span>
done</span></span>
} >>"</span>$COMMIT_MSG_FILE</span>.tmp</span>"</span></span>
</span>
cat</span> "</span>$COMMIT_MSG_FILE</span>" >>"</span>$COMMIT_MSG_FILE</span>.tmp</span>"</span></span>
mv</span> "</span>$COMMIT_MSG_FILE</span>.tmp</span>" "</span>$COMMIT_MSG_FILE</span>"</span></span>
</span>
$EDITOR</span> "</span>$COMMIT_MSG_FILE</span>"</span></span></code></pre>
Another nice feature that comes with most IDEs is the suggestion of co-authors. Neovim does not have this features. Giving our wrapper above its simple to extent it with previous authors.</p>
#!/bin/sh</span></span>
set</span> -e</span></span>
</span>
COMMIT_MSG_FILE</span>="</span>$1</span>"</span></span>
</span>
# Show the latest 10 commits</span></span>
{</span></span>
echo</span> ""</span></span>
echo</span> "</span># Recent commits:</span>"</span></span>
git</span> log</span> --pretty=format:</span>"</span>%s</span>"</span> -n 10</span> | while</span> read</span> -r</span> line</span>; do</span></span>
echo</span> "</span># </span>$line</span>"</span></span>
done</span></span>
} >>"</span>$COMMIT_MSG_FILE</span>.tmp</span>"</span></span>
</span>
# Suggest the last 5 authors as co-authors</span></span>
{</span></span>
echo</span> ""</span></span>
echo</span> "</span># Recent authors:</span>"</span></span>
git</span> log</span> --format=</span>'</span>%an <%ae></span>'</span> -n 5</span> |</span> sort</span> -u</span> | while</span> read</span> -r</span> author</span>; do</span></span>
echo</span> "</span># Co-authored-by: </span>$author</span>"</span></span>
done</span></span>
} >>"</span>$COMMIT_MSG_FILE</span>.tmp</span>"</span></span>
</span>
cat</span> "</span>$COMMIT_MSG_FILE</span>" >>"</span>$COMMIT_MSG_FILE</span>.tmp</span>"</span></span>
mv</span> "</span>$COMMIT_MSG_FILE</span>.tmp</span>" "</span>$COMMIT_MSG_FILE</span>"</span></span>
</span>
$EDITOR</span> "</span>$COMMIT_MSG_FILE</span>"</span></span></code></pre>
Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.