[PATCH] Use a temporary index file when we merge the common ancestors.
With this change we can get rid of a call to 'git-update-index --refresh'. Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							87a71b65ac
						
					
				
				
					commit
					6511cce24b
				
			@ -10,6 +10,22 @@ from gitMergeCommon import *
 | 
				
			|||||||
# The actual merge code
 | 
					# The actual merge code
 | 
				
			||||||
# ---------------------
 | 
					# ---------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					originalIndexFile = os.environ.get('GIT_INDEX_FILE',
 | 
				
			||||||
 | 
					                                   os.environ.get('GIT_DIR', '.git') + '/index')
 | 
				
			||||||
 | 
					temporaryIndexFile = os.environ.get('GIT_DIR', '.git') + \
 | 
				
			||||||
 | 
					                     '/merge-recursive-tmp-index'
 | 
				
			||||||
 | 
					def setupIndex(temporary):
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        os.unlink(temporaryIndexFile)
 | 
				
			||||||
 | 
					    except OSError:
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					    if temporary:
 | 
				
			||||||
 | 
					        newIndex = temporaryIndexFile
 | 
				
			||||||
 | 
					        os.environ
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        newIndex = originalIndexFile
 | 
				
			||||||
 | 
					    os.environ['GIT_INDEX_FILE'] = newIndex
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def merge(h1, h2, branch1Name, branch2Name, graph, callDepth=0):
 | 
					def merge(h1, h2, branch1Name, branch2Name, graph, callDepth=0):
 | 
				
			||||||
    '''Merge the commits h1 and h2, return the resulting virtual
 | 
					    '''Merge the commits h1 and h2, return the resulting virtual
 | 
				
			||||||
    commit object and a flag indicating the cleaness of the merge.'''
 | 
					    commit object and a flag indicating the cleaness of the merge.'''
 | 
				
			||||||
@ -39,13 +55,10 @@ def merge(h1, h2, branch1Name, branch2Name, graph, callDepth=0):
 | 
				
			|||||||
        assert(isinstance(Ms, Commit))
 | 
					        assert(isinstance(Ms, Commit))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if callDepth == 0:
 | 
					    if callDepth == 0:
 | 
				
			||||||
        if len(ca) > 1:
 | 
					        setupIndex(False)
 | 
				
			||||||
            runProgram(['git-read-tree', h1.tree()])
 | 
					 | 
				
			||||||
            runProgram(['git-update-index', '-q', '--refresh'])
 | 
					 | 
				
			||||||
        # Use the original index if we only have one common ancestor
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        cleanCache = False
 | 
					        cleanCache = False
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
 | 
					        setupIndex(True)
 | 
				
			||||||
        runProgram(['git-read-tree', h1.tree()])
 | 
					        runProgram(['git-read-tree', h1.tree()])
 | 
				
			||||||
        cleanCache = True
 | 
					        cleanCache = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user