[Insight-developers] Learning from my mistakes (an adventure in git)

Brad King brad.king at kitware.com
Mon Aug 2 09:35:14 EDT 2010


On 08/01/2010 05:15 PM, Hans Johnson wrote:
> Would it be possible to have the itk_common.cmake setup the git hooks by
> default?

That script is for creating dashboard builds, not developer clones.
I prefer to keep it focused.  However, I just pushed out a change
to handle this:

  http://itk.org/gitweb?p=ITK.git;a=commitdiff;h=311e2ee1

Now after running CMake if you try to commit to your ITK clone it
will fail with instructions to install the hooks.  This should prevent
folks from accidentally creating commits without the local hooks.

> Problems that I ran into:
> 1) I forgot to setup the commit hooks, and some of my commits did not pass that test.

The above should handle this in the future.

> 2) I had the wrong e-mail address listed, so I wanted to fix that.

One of the local hooks verifies that you have *an* email address set.
If you had the wrong one you can fix the most recent commit using

  git commit --amend --reset-author

after fixing your "~/.gitconfig".  To fix more commits, use "git rebase -i"
and change the "pick" lines to "edit".

> 3) I did not understand the branching mechanisms of git very well, so I ended up with a bit of a mess.

Have things cleared up for you?  The way I keep track of things is to
always remember that history is a *graph* (DAG).  Git's "branches" are
really just references to nodes in the graph.  A commit on a branch just
creates a new node and moves the branch reference forward to it.

4) Off-by-one error in the index for problem 5 :)

> 5) My intermediate commits needed to be re-ordered to fit into a more logical commit structure.
[snip]
> In order to do this, I took my non-logical branches, and created a
> complete patch set from them to disk, and then started re-importing
> the patches in a organized progression.

FYI, your procedure can be simplified using

  git rebase -i

and

  git rebase --whitespace=fix

-Brad


More information about the Insight-developers mailing list