Mercurial > hg
changeset 49190:4ff4e23de7df
clone: use better names for temp files
Before this commit, the file names are /tmp/tmpn8smvlr8
After this commit, they are more like /tmp/hg-clone-n8smvlr8/00manifest.ndb3qj52v6,
which makes it much clearer what these files correspond to.
Differential Revision: https://phab.mercurial-scm.org/D12623
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Tue, 10 May 2022 20:30:26 +0100 |
parents | 237855525f64 |
children | 4450faeb52bb |
files | mercurial/streamclone.py mercurial/util.py |
diffstat | 2 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/streamclone.py Mon May 02 16:27:14 2022 +0400 +++ b/mercurial/streamclone.py Tue May 10 20:30:26 2022 +0100 @@ -558,11 +558,15 @@ @contextlib.contextmanager def maketempcopies(): """return a function to temporary copy file""" + files = [] + dst_dir = pycompat.mkdtemp(prefix=b'hg-clone-') try: def copy(src): - fd, dst = pycompat.mkstemp() + fd, dst = pycompat.mkstemp( + prefix=os.path.basename(src), dir=dst_dir + ) os.close(fd) files.append(dst) util.copyfiles(src, dst, hardlink=True) @@ -572,6 +576,7 @@ finally: for tmp in files: util.tryunlink(tmp) + util.tryrmdir(dst_dir) def _makemap(repo):
--- a/mercurial/util.py Mon May 02 16:27:14 2022 +0400 +++ b/mercurial/util.py Tue May 10 20:30:26 2022 +0100 @@ -2592,6 +2592,14 @@ self.close() +def tryrmdir(f): + try: + removedirs(f) + except OSError as e: + if e.errno != errno.ENOENT and e.errno != errno.ENOTEMPTY: + raise + + def unlinkpath(f, ignoremissing=False, rmdir=True): # type: (bytes, bool, bool) -> None """unlink and remove the directory if it is empty"""