aboutsummaryrefslogtreecommitdiff
path: root/fsck.h
diff options
context:
space:
mode:
authorRamkumar Ramachandra <artagnon@gmail.com>2013-05-12 17:26:41 +0530
committerJunio C Hamano <gitster@pobox.com>2013-05-29 10:34:54 -0700
commit587947750bd73544a6a99811f0ddfd64e1ff1445 (patch)
treeb26e7a4526e1e2a658e65e18da0ebde73474362f /fsck.h
parent01a1e6465fea95c2b4303ed6c9bd14b276456f2d (diff)
downloadgit-587947750bd73544a6a99811f0ddfd64e1ff1445.tar.gz
git-587947750bd73544a6a99811f0ddfd64e1ff1445.tar.xz
rebase: implement --[no-]autostash and rebase.autostash
This new feature allows a rebase to be executed on a dirty worktree or index. It works by creating a temporary "dangling merge commit" out of the worktree and index changes (via 'git stash create'), and automatically applying it after a successful rebase or abort. rebase stores the SHA-1 hex of the temporary merge commit, along with the rest of the rebase state, in either .git/{rebase-merge,rebase-apply}/autostash depending on the kind of rebase. Since $state_dir is automatically removed at the end of a successful rebase or abort, so is the autostash. The advantage of this approach is that we do not affect the normal stash's reflogs, making the autostash invisible to the end-user. This means that you can use 'git stash' during a rebase as usual. When the autostash application results in a conflict, we push $state_dir/autostash onto the normal stash and remove $state_dir ending the rebase. The user can inspect the stash, and pop or drop at any time. Most significantly, this feature means that a caller like pull (with pull.rebase set to true) can easily be patched to remove the require_clean_work_tree restriction. Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'fsck.h')
0 files changed, 0 insertions, 0 deletions