Throughout my day, I work on several different Git 🔍 repositories. And sometimes, I can lose track of what all I’ve worked on.
To help with this task, I created the following Emacs 🔍 variable and function to let me quickly and methodically check the status of those repositories.
;; This is a truncated list of my projects (setq jnf/data-dirs '( "~/git/takeonrules.github.io/themes/hugo-tufte" "~/git/takeonrules.github.io/" "~/git/dotzshrc/" "~/git/ndlib/sipity" "~/git/samvera/hyrax")) (cl-defun jnf/git-data-statuses (&optional (dirs jnf/data-dirs)) "Review DIRS via `magit'. By default the DIRS are `jnf/data-dirs'" (interactive) (message "Review status of local git repos...") (dolist (path dirs) (if (f-dir-p (file-truename path)) (magit-status path))))
When I execute the
jnf/git-data-statuses command, Emacs opens one
Magit 🔍 buffer for each of the git repositories in the
jnf/data-dirs list. I then work through what I need to do for each git repository.
Below is an example of the
magit-status buffer for the
~/git/takeonrules.github.io/ git repository:
Head: trunk Publishing general update eg. no posts Rebase: origin/trunk Publishing general update eg. no posts Push: origin/trunk Publishing general update eg. no posts Untracked files (1) content/posts/2021/emacs-script-to-review-git-status-of-repositories.md Unstaged changes (1) modified data/glossary.yml
From that buffer, I can perform the various git commands (e.g., stage all changes, commit the changes, push the branch). And when I’m done with that project’s buffer, I close it out and move on to the next project.