git-commit-vandalism/lib
Shawn O. Pearce 61f82ce79a 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>
2007-05-28 17:50:42 -04:00
..
blame.tcl git-gui: Format author/committer times in ISO format 2007-05-09 00:48:27 -04:00
branch_rename.tcl git-gui: Allow users to rename branches through 'branch -m' 2007-05-28 17:50:42 -04:00
branch.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
browser.tcl git-gui: Convert blame to the "class" way of doing things 2007-05-08 21:38:55 -04:00
class.tcl git-gui: Don't attempt to inline array reads in methods 2007-05-08 21:38:54 -04:00
commit.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
console.tcl git-gui: Convert browser, console to "class" format 2007-05-08 21:38:54 -04:00
database.tcl git-gui: Convert browser, console to "class" format 2007-05-08 21:38:54 -04:00
diff.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
error.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
index.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
merge.tcl git-gui: Convert browser, console to "class" format 2007-05-08 21:38:54 -04:00
option.tcl git-gui: Show the git-gui library path in 'About git-gui' 2007-05-28 17:50:41 -04:00
remote.tcl git-gui: GUI support for running 'git remote prune <name>' 2007-05-28 17:50:40 -04:00
shortcut.tcl git-gui: Refactor into multiple files to save my sanity 2007-05-07 23:35:48 -04:00
transport.tcl git-gui: GUI support for running 'git remote prune <name>' 2007-05-28 17:50:40 -04:00