| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -353,26 +353,22 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile | |||
| 353 | 353 | ||
| 354 | 354 | # tmp file created in git home directory to be sure renaming | |
| 355 | 355 | # works - /tmp/ dirs could be on another device | |
| 356 | - tmp_index = tempfile.mktemp("", "", repo.git_dir) | ||
| 357 | - arg_list.append("--index-output=%s" % tmp_index) | ||
| 358 | - arg_list.extend(treeish) | ||
| 359 | - | ||
| 360 | - # move current index out of the way - otherwise the merge may fail | ||
| 361 | - # as it considers existing entries. moving it essentially clears the index. | ||
| 362 | - # Unfortunately there is no 'soft' way to do it. | ||
| 363 | - # The TemporaryFileSwap assure the original file get put back | ||
| 364 | - try: | ||
| 365 | - with ExitStack() as stack: | ||
| 366 | - if repo.git_dir: | ||
| 367 | - stack.enter_context(TemporaryFileSwap(join_path_native(repo.git_dir, "index"))) | ||
| 368 | - repo.git.read_tree(*arg_list, **kwargs) | ||
| 369 | - index = cls(repo, tmp_index) | ||
| 370 | - index.entries # force it to read the file as we will delete the temp-file | ||
| 371 | - return index | ||
| 372 | - finally: | ||
| 373 | - if osp.exists(tmp_index): | ||
| 374 | - os.remove(tmp_index) | ||
| 375 | - # END index merge handling | ||
| 356 | + with ExitStack() as stack: | ||
| 357 | + tmp_index = stack.enter_context(tempfile.NamedTemporaryFile(dir=repo.git_dir)) | ||
| 358 | + arg_list.append("--index-output=%s" % tmp_index.name) | ||
| 359 | + arg_list.extend(treeish) | ||
| 360 | + | ||
| 361 | + # move current index out of the way - otherwise the merge may fail | ||
| 362 | + # as it considers existing entries. moving it essentially clears the index. | ||
| 363 | + # Unfortunately there is no 'soft' way to do it. | ||
| 364 | + # The TemporaryFileSwap assure the original file get put back | ||
| 365 | + | ||
| 366 | + stack.enter_context(TemporaryFileSwap(join_path_native(repo.git_dir, "index"))) | ||
| 367 | + repo.git.read_tree(*arg_list, **kwargs) | ||
| 368 | + index = cls(repo, tmp_index.name) | ||
| 369 | + index.entries # force it to read the file as we will delete the temp-file | ||
| 370 | + return index | ||
| 371 | + # END index merge handling | ||
| 376 | 372 | ||
| 377 | 373 | # UTILITIES | |
| 378 | 374 | @unbare_repo | |
| Back | FazBrowse Home | New Git URL |
0 commit comments