orgweb/site/projects/git-auto-commit-mode.org

2.8 KiB

git-auto-commit-mode

<script src="/keyjs.js" type="text/javascript"></script> <script type="text/javascript"> keyjs_initialize({ "u": [ "keyjs_goto", "../index.html" ], "h": [ "keyjs_goto", "http://ryuslash.org" ] }); </script>

About

git-auto-commit-mode is a minor mode for GNU Emacs1 that, when enabled, tries to commit changes to a file after every save. It can also try to push to the default upstream.

Features

  • Automatically commit changes to a file after each save.

    • The commit message will contain the file name relative to the repository root.
  • Optionally, automatically push commits to the default upstream.

Requirements

These should be mostly obvious.

Usage

To be able to use it you need to put it somewhere in your load-path and load it, for example:

  (add-to-list 'load-path "~/path/to/git-auto-commit-mode.el")
  (auto load 'git-auto-commit-mode "git-auto-commit-mode")

Automatically commit

There are a few ways this could be used:

As file-local variable

This is the way I use it and I wanted to use it. Any file that you would like to have automatically committed upon saving gets this prop-line:

  ;; -*- eval: (git-auto-commit-mode 1) -*-

Or, if you're in anything older than emacs 24:

  ;; -*- mode: git-auto-commit -*-

As a directory-local variable

Put the following in a .dir-locals.el file in any directory where you want to enable git-auto-commit-mode for all files:

  ((nil . ((git-auto-commit-mode . t))))

As a hook

I doubt this will ever really be useful, but it is possible:

  (add-hook 'some-hook 'git-auto-commit-mode)

Automatically push

If you wish to push your changes each time the file is saved you should set gac-automatically-push-p to t. This is a buffer local variable, so you will have to put it in your dir-local or file-local variables. Alternatively, if you're sure you can also set the default value to t, like so:

  (setq-default gac-automatically-push-p t)