egit

Homepage: https://github.com/jimhourihan/egit

Updated:

Summary

Emacs git commit history interface ala gitk and qgit

Commentary

This file contains an interface to git commands which are not
(currently) part of git.el. Primarily, this is a view of the git commit
history with the ability to mark ranges and/or single commits and
operate on them. Mutiple branches/tags/ref interfaces can be active at
the same time.

To install: put this file on the load-path and place the following in
your .emacs file:

     (require 'egit)
         -or-
     (autoload 'egit "egit" "Emacs git history" t)
     (autoload 'egit-file "egit" "Emacs git history file" t)
     (autoload 'egit-dir "egit" "Emacs git history directory" t)

`M-x egit' shows commit history for a given branch, tag, or other ref. With
a prefix argument, you supply a directory (to identify the repo), the ref,
and a maximum number of commits to show -- e.g., M-x C-u egit 

`M-x egit-file' will show commits related to a specific file

`M-x egit-dir' will show commits related to files within a directory

egit is currently useful for browsing the history. It has only a few
operations implemented (cherry-pick, revert, tag, delete tag) -- and
those are implemented only minimally. The framework for operating on a
single or multiple commits (that have been marked) already exists, so
adding new git commands should be relatively easy.

There isn't a way to specify a range of commits (unless you use the
marked commits to do so). There should probably be a dedicated method of
creating a range to pass to git commands. It might be good to have a
facility like qgit's in which user defined commands can be added
(although the default set should be fairly complete)

The "occur" feature needs something like himark to highlight the occur
regex in the comment buffer(s). There's a piece of code in there that
currently calls himark that's commented out. The idea is to "grep"
through comments. For example to highlight all cherry picked commits
search for "cherry", etc.

Start up time can be significant when 10s of thousands of commits are
being displayed so the default is 500. You can increase that after the
fact by clicking on the number of commits message at the end of the
buffer. 

TODO
 - graph representation along the left of the commit buffer
 - graphical rep of a commit range (like the marks)
 - git reset functions
 - branch creation at a commit
 - patch creation from a set of commits
 - show list of authors/sign-offs related to commits
 - make occur more useful
 - speed up 
 - lazy resolve parent commits
 - make delete tag default to one of the current commit tags

WISH
 - incrementally load commits

Dependencies