aboutsummaryrefslogtreecommitdiff
path: root/index.html
blob: 8627146d68e19eaf13d2cf1d29b4fe89ade7ff9d (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

<h1>git-save</h1>
<p><big>git-save is a Git command designed for <em>commitless version
control</em>. The instruction <code>git save</code> is equivalent to <code>git
add . &amp;&amp; git commit --allow-empty-message -m ""</code>.</big></p>
<h2>What is commitless version control?</h2>
<p>Commitless version control is a software development method with two
rules:</p>
<ol>
  <li> Make <i>saves</i> instead of commits. A save is like a commit,
except
    <ul>
      <li>it has no commit message, and</li>
      <li>it includes <em>all changes</em> in <em>all files</em>.</li>
    </ul>
  </li>
  <li>Don't worry about keeping a clean, thematically organized commit
history. A save should contain all changes made since the last save,
regardless of theme.</li>
</ol>
<p>In summary, <h>eschew order for chaos</h>.</p>
<h2>What is git-save?</h2>
<p>git-save is a tool that makes it easy to use Git as a commitless
version control system. It has a simple interface:</p>
<pre>$ git save</pre>
<p>In combination with a file watcher, saves can be performed
automatically whenever you write to the files in your project:</p>
<pre>$ watch example.doc | while read; do git save; done</pre>
<h2>Benefits</h2>
<p>For the single developer, commitless version control presents
several benefits:</p>
<ul>
  <li><b>Lower commit hurdle.</b> Using git-save is as easy as saving a
Microsoft Word document.</li>
  <li><b>More comprehensive history.</b> Because saves don't need to be
complete, isolated or even well-written, they can be made much more
often. This results in a much more comprehensive history, where changes
that normally wouldn't make it into a commit are included as well.</li>
  <li><b>Lower risk of losing work.</b> Because saves are made more
often than commits, and saves automatically capture all changes, not
just a carefully selected few, potentially important changes rarely
remain uncommitted, hanging in the air and easily lost.</li>
</ul>
<p>Additionally, if commitless version control were to become popular,
it might have a few more far-reaching positive effects:</p>
<ul>
  <li><b>Improved tooling.</b> Lacking commit messages, developers
would be forced to rely more on information about which files were
changed and in which ways -- which version control tools would be forced
to convey better. This information is ultimately more precise than a
commit message.</li>
  <li><b>Beginner-friendliness.</b> Without the requirement to keep a
clean commit history, and the accompanying mental burden, it would be
much easier for beginners to get into the habit of putting their
projects under version control.</li>
</ul>