|
4 | 4 | # This module is part of GitPython and is released under
|
5 | 5 | # the BSD License: http://www.opensource.org/licenses/bsd-license.php
|
6 | 6 |
|
| 7 | +from contextlib import ExitStack |
7 | 8 | import datetime
|
8 | 9 | import glob
|
9 | 10 | from io import BytesIO
|
@@ -360,20 +361,19 @@ def from_tree(cls, repo: "Repo", *treeish: Treeish, **kwargs: Any) -> "IndexFile
|
360 | 361 | # as it considers existing entries. moving it essentially clears the index.
|
361 | 362 | # Unfortunately there is no 'soft' way to do it.
|
362 | 363 | # The TemporaryFileSwap assure the original file get put back
|
363 |
| - if repo.git_dir: |
364 |
| - index_handler = TemporaryFileSwap(join_path_native(repo.git_dir, "index")) |
365 | 364 | try:
|
366 |
| - repo.git.read_tree(*arg_list, **kwargs) |
367 |
| - index = cls(repo, tmp_index) |
368 |
| - index.entries # force it to read the file as we will delete the temp-file |
369 |
| - del index_handler # release as soon as possible |
| 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 |
370 | 372 | finally:
|
371 | 373 | if osp.exists(tmp_index):
|
372 | 374 | os.remove(tmp_index)
|
373 | 375 | # END index merge handling
|
374 | 376 |
|
375 |
| - return index |
376 |
| - |
377 | 377 | # UTILITIES
|
378 | 378 | @unbare_repo
|
379 | 379 | def _iter_expand_paths(self: "IndexFile", paths: Sequence[PathLike]) -> Iterator[PathLike]:
|
@@ -1156,7 +1156,6 @@ def checkout(
|
1156 | 1156 | unknown_lines = []
|
1157 | 1157 |
|
1158 | 1158 | def handle_stderr(proc: "Popen[bytes]", iter_checked_out_files: Iterable[PathLike]) -> None:
|
1159 |
| - |
1160 | 1159 | stderr_IO = proc.stderr
|
1161 | 1160 | if not stderr_IO:
|
1162 | 1161 | return None # return early if stderr empty
|
|
0 commit comments