While git.apply_diff works correctly, the git.switch implementation
doesn't update the index (only the HEAD) and a subsequent 'stg refresh'
would merge all the popped patches into the current one ('stg refresh
--patch' fails in the same way). This patch fixes git.switch to read the
new index (git-read-tree) if keep == True.
Before commit
a77bfa77 (to fix bug #8972), git-apply had the --index
option to automatically update the index but it was failing in many
cases.
The drawback is that a subsequent git-update-index takes longer than
usual, but at least we have a correct behaviour.
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
def switch(tree_id, keep = False):
"""Switch the tree to the given id
"""
def switch(tree_id, keep = False):
"""Switch the tree to the given id
"""
+ if keep:
+ # only update the index while keeping the local changes
+ GRun('git-read-tree', tree_id).run()
+ else:
refresh_index()
try:
GRun('git-read-tree', '-u', '-m', get_head(), tree_id).run()
refresh_index()
try:
GRun('git-read-tree', '-u', '-m', get_head(), tree_id).run()