diff options
author | wenchiching <wenchiching@gmail.com> | 2021-08-23 10:47:27 +0800 |
---|---|---|
committer | Mike Frysinger <vapier@google.com> | 2021-09-24 08:20:06 +0000 |
commit | 366824937c179c0ce7e316f6bbefce99eabab408 (patch) | |
tree | 9412ed3f450f39568d32c0c90969ce58ea28eda5 | |
parent | a84f43a0065e7af2a30fd6b99bf3f13efcc7961c (diff) | |
download | git-repo-366824937c179c0ce7e316f6bbefce99eabab408.tar.gz |
platform_utils: os.rename exception when src and des on different file system
Symptom: repo sync exception
Root Cause: os.rename only works when source and destination are on the same file system
Solution: using shutil.move
to save disk usage, I create links for projects and project-objects, link to folder on another disk
lrwxrwxrwx 1 owenwen owenwen 47 Jun 9 16:40 project-objects -> /disk3/AndroidLocalRepos/.repo/project-objects/
lrwxrwxrwx 1 owenwen owenwen 40 Jun 9 16:40 projects -> /disk3/AndroidLocalRepos/.repo/projects/
below are exception I met:
"""
Traceback (most recent call last):
File "/usr/lib/python3.6/multiprocessing/pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "/usr/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/disk2/Android11/.repo/repo/subcmds/sync.py", line 550, in _CheckoutOne
project.Sync_LocalHalf(syncbuf, force_sync=force_sync)
File "/disk2/Android11/.repo/repo/project.py", line 1251, in Sync_LocalHalf
self._InitWorkTree(force_sync=force_sync, submodules=submodules)
File "/disk2/Android11/.repo/repo/project.py", line 2801, in _InitWorkTree
self._CheckDirReference(self.gitdir, dotgit, share_refs=True)
File "/disk2/Android11/.repo/repo/project.py", line 2674, in _CheckDirReference
platform_utils.rename(dst_path, src_path)
File "/disk2/Android11/.repo/repo/platform_utils.py", line 127, in rename
os.rename(src, dst)
OSError: [Errno 18] Invalid cross-device link: '/disk2/Android11/system/libhidl/.git/packed-refs' -> '/disk2/Android11/.repo/projects/system/libhidl.git/packed-refs'
"""
Change-Id: Ifda2f16530cc5a8f280169f482ee858f9e5241d3
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/316002
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
-rw-r--r-- | platform_utils.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/platform_utils.py b/platform_utils.py index 00c51d9b..5741f4d3 100644 --- a/platform_utils.py +++ b/platform_utils.py | |||
@@ -124,7 +124,7 @@ def rename(src, dst): | |||
124 | else: | 124 | else: |
125 | raise | 125 | raise |
126 | else: | 126 | else: |
127 | os.rename(src, dst) | 127 | shutil.move(src, dst) |
128 | 128 | ||
129 | 129 | ||
130 | def remove(path): | 130 | def remove(path): |