mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:45:25 +01:00 
			
		
		
		
	Fix clean tmp dir (#32360)
Try to fix #31792 Credit to @jeroenlaylo Copied from https://github.com/go-gitea/gitea/issues/31792#issuecomment-2311920520 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		
							parent
							
								
									5d43801b72
								
							
						
					
					
						commit
						feca8802b8
					
				| @ -50,25 +50,35 @@ func (repo *Repository) readTreeToIndex(id ObjectID, indexFilename ...string) er | ||||
| } | ||||
| 
 | ||||
| // ReadTreeToTemporaryIndex reads a treeish to a temporary index file | ||||
| func (repo *Repository) ReadTreeToTemporaryIndex(treeish string) (filename, tmpDir string, cancel context.CancelFunc, err error) { | ||||
| 	tmpDir, err = os.MkdirTemp("", "index") | ||||
| 	if err != nil { | ||||
| 		return filename, tmpDir, cancel, err | ||||
| 	} | ||||
| func (repo *Repository) ReadTreeToTemporaryIndex(treeish string) (tmpIndexFilename, tmpDir string, cancel context.CancelFunc, err error) { | ||||
| 	defer func() { | ||||
| 		// if error happens and there is a cancel function, do clean up | ||||
| 		if err != nil && cancel != nil { | ||||
| 			cancel() | ||||
| 			cancel = nil | ||||
| 		} | ||||
| 	}() | ||||
| 
 | ||||
| 	filename = filepath.Join(tmpDir, ".tmp-index") | ||||
| 	cancel = func() { | ||||
| 		err := util.RemoveAll(tmpDir) | ||||
| 		if err != nil { | ||||
| 			log.Error("failed to remove tmp index file: %v", err) | ||||
| 	removeDirFn := func(dir string) func() { // it can't use the return value "tmpDir" directly because it is empty when error occurs | ||||
| 		return func() { | ||||
| 			if err := util.RemoveAll(dir); err != nil { | ||||
| 				log.Error("failed to remove tmp index dir: %v", err) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	err = repo.ReadTreeToIndex(treeish, filename) | ||||
| 
 | ||||
| 	tmpDir, err = os.MkdirTemp("", "index") | ||||
| 	if err != nil { | ||||
| 		defer cancel() | ||||
| 		return "", "", func() {}, err | ||||
| 		return "", "", nil, err | ||||
| 	} | ||||
| 	return filename, tmpDir, cancel, err | ||||
| 
 | ||||
| 	tmpIndexFilename = filepath.Join(tmpDir, ".tmp-index") | ||||
| 	cancel = removeDirFn(tmpDir) | ||||
| 	err = repo.ReadTreeToIndex(treeish, tmpIndexFilename) | ||||
| 	if err != nil { | ||||
| 		return "", "", cancel, err | ||||
| 	} | ||||
| 	return tmpIndexFilename, tmpDir, cancel, err | ||||
| } | ||||
| 
 | ||||
| // EmptyIndex empties the index | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user