summaryrefslogtreecommitdiffstats
path: root/site/projects/git-auto-commit-mode.org
blob: 16ff9869bb11c1ffc879843b9d50dc267ad1abfd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#+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
  <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>
#+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