#+TITLE: git-auto-commit-mode #+LINK: src http://code.ryuslash.org/cgit.cgi/emacs/git-auto-commit-mode/ #+LINK: tar_gz http://code.ryuslash.org/cgit.cgi/emacs/git-auto-commit-mode/snapshot/git-auto-commit-mode-master.tar.gz #+LINK: zip http://code.ryuslash.org/cgit.cgi/emacs/git-auto-commit-mode/snapshot/git-auto-commit-mode-master.zip #+STARTUP: showall #+begin_html #+end_html #+INCLUDE: "dlmenu.inc" * About ~git-auto-commit-mode~ is a minor mode for GNU Emacs that, when enabled, tries to commit changes to a file after every save. It can also try to push to the default upstream. | Status | On-hold | | Language | Emacs Lisp | | Licennse | GPLv3 | * 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 - [[http://gnu.org/software/emacs][GNU Emacs]] - [[http://git-scm.com][git]] * Download There are download links for a ~tar.gz~ and a ~zip~ file of the latest development version at the top of this page. ~git-auto-commit-mode~ is in the [[http://marmalade-repo.org/][Marmalade]] repo. * Install Once you have [[Download][downloaded]] ~git-auto-commit-mode~ you have at least 2 choices for installation. ** package.el If you have Emacs v24+ or [[http://tromey.com/elpa/install.html][package.el]] and Marmalade configured, you can just: #+BEGIN_SRC emacs-lisp (package-install "git-auto-commit-mode") #+END_SRC ** manual Otherwise you have to [[Download][dowload]] it and then put it somewhere in your =load-path=, or add that location to your =load-path=: #+begin_src emacs-lisp (add-to-list 'load-path "~/location/of/git-auto-commit-mode") #+end_src After which you can either ~require~ the package in your Emacs init file: #+BEGIN_SRC emacs-lisp (require 'git-auto-commit-mode) #+END_SRC Or set-up some autoloads: #+BEGIN_SRC emacs-lisp (autoload 'git-auto-commit-mode "git-auto-commit-mode" nil t) #+END_SRC * Usage 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: #+BEGIN_SRC emacs-lisp ;; -*- eval: (git-auto-commit-mode 1) -*- #+END_SRC Or, if you're in anything older than emacs 24: #+BEGIN_SRC emacs-lisp ;; -*- mode: git-auto-commit -*- #+END_SRC ** 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: #+BEGIN_SRC emacs-lisp ((nil . ((git-auto-commit-mode . t)))) #+END_SRC ** As a hook I doubt this will ever really be useful, but it is possible: #+BEGIN_SRC emacs-lisp (add-hook 'some-hook 'git-auto-commit-mode) #+END_SRC ** 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: #+begin_src emacs-lisp (setq-default gac-automatically-push-p t) #+end_src