Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Emacs git history interface
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
;; 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. egit can visit a version of a file as it appeared relative to a commit. When viewing a branch history egit will prompt for the file. When viewing a file's history the current file is assumed. This facility breaks down if a file's content blob changed at some point (e.g., it was renamed). 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. Unfortunately, this is not an unusual situtation. 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