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>
This commit is contained in:
parent
a84f43a006
commit
366824937c
1 changed files with 1 additions and 1 deletions
|
|
@ -124,7 +124,7 @@ def rename(src, dst):
|
|||
else:
|
||||
raise
|
||||
else:
|
||||
os.rename(src, dst)
|
||||
shutil.move(src, dst)
|
||||
|
||||
|
||||
def remove(path):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue