diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-03-25 08:02:41 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-25 08:02:41 +0000 |
commit | 9d2551d593a683d3bd3344cf708df85648210e1c (patch) | |
tree | 5435868980ac2ff2476fe9dccb922518c267bb85 /modules/ui_extensions.py | |
parent | 442f710d942cbcd3cc436c759fb457b619baa1a6 (diff) | |
parent | 6f5a5ad2057a2b2a1c94a5c3bf5bf0d8fefc187f (diff) | |
download | stable-diffusion-webui-gfx803-9d2551d593a683d3bd3344cf708df85648210e1c.tar.gz stable-diffusion-webui-gfx803-9d2551d593a683d3bd3344cf708df85648210e1c.tar.bz2 stable-diffusion-webui-gfx803-9d2551d593a683d3bd3344cf708df85648210e1c.zip |
Merge pull request #8647 from Tps-F/add_submodule
Support git submodule for extension and Fix Windows PermissionError
Diffstat (limited to 'modules/ui_extensions.py')
-rw-r--r-- | modules/ui_extensions.py | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py index 50173e68..4a502974 100644 --- a/modules/ui_extensions.py +++ b/modules/ui_extensions.py @@ -1,6 +1,5 @@ import json
import os.path
-import shutil
import sys
import time
import traceback
@@ -141,22 +140,20 @@ def install_extension_from_url(dirname, url): try:
shutil.rmtree(tmpdir, True)
-
- repo = git.Repo.clone_from(url, tmpdir)
- repo.remote().fetch()
-
+ with git.Repo.clone_from(url, tmpdir) as repo:
+ repo.remote().fetch()
+ for submodule in repo.submodules:
+ submodule.update()
try:
os.rename(tmpdir, target_dir)
except OSError as err:
- # TODO what does this do on windows? I think it'll be a different error code but I don't have a system to check it
- # Shouldn't cause any new issues at least but we probably want to handle it there too.
if err.errno == errno.EXDEV:
# Cross device link, typical in docker or when tmp/ and extensions/ are on different file systems
# Since we can't use a rename, do the slower but more versitile shutil.move()
shutil.move(tmpdir, target_dir)
else:
# Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
- raise(err)
+ raise err
import launch
launch.run_extension_installer(target_dir)
|