git-gui: Allow users to rename branches through 'branch -m'
authorShawn O. Pearce <spearce@spearce.org>
Mon, 28 May 2007 16:52:57 +0000 (12:52 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 28 May 2007 21:50:42 +0000 (17:50 -0400)
commit61f82ce79abe965c466bb7d3d1d89ae631fbbd24
treef8aee7d20c68b5df4464b6b1ae981b513ee55f64
parentf60fdd0eaaaf92882f3e6aeb19bb85482fab6d39
git-gui: Allow users to rename branches through 'branch -m'

Git's native command line interface has had branch renaming
support for quite a while, through the -m/-M options to the
git-branch command line tool.  This is an extremely useful
feature as users may decide that the name of their current
branch is not an adequate description, or was just entered
incorrectly when it was created.

Even though most people would consider git-branch to be a
Porcelain tool I'm using it here in git-gui as it is the
only code that implements the rather complex set of logic
needed to successfully rename a branch in Git.  Currently
that is along the lines of:

 *) Backup the ref
 *) Backup the reflog
 *) Delete the old ref
 *) Create the new ref
 *) Move the backed up reflog to the new ref
 *) Record the rename event in the reflog
 *) If the current branch was renamed, update HEAD
 *) If HEAD changed, record the rename event in the HEAD reflog
 *) Rename the [branch "$name"] section in the config file

Since that is some rather ugly set of functionality to implement
and get right, and some of it isn't easily accessible through the
raw plumbing layer I'm just cheating by relying on the Porcelain.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh
lib/branch_rename.tcl [new file with mode: 0644]