mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2025-01-06 15:15:05 +08:00
Merge pull request #8647 from Tps-F/add_submodule
Support git submodule for extension and Fix Windows PermissionError
This commit is contained in:
commit
9d2551d593
@ -1,6 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
import os.path
|
import os.path
|
||||||
import shutil
|
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
@ -141,22 +140,20 @@ def install_extension_from_url(dirname, url):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.rmtree(tmpdir, True)
|
shutil.rmtree(tmpdir, True)
|
||||||
|
with git.Repo.clone_from(url, tmpdir) as repo:
|
||||||
repo = git.Repo.clone_from(url, tmpdir)
|
repo.remote().fetch()
|
||||||
repo.remote().fetch()
|
for submodule in repo.submodules:
|
||||||
|
submodule.update()
|
||||||
try:
|
try:
|
||||||
os.rename(tmpdir, target_dir)
|
os.rename(tmpdir, target_dir)
|
||||||
except OSError as err:
|
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:
|
if err.errno == errno.EXDEV:
|
||||||
# Cross device link, typical in docker or when tmp/ and extensions/ are on different file systems
|
# 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()
|
# Since we can't use a rename, do the slower but more versitile shutil.move()
|
||||||
shutil.move(tmpdir, target_dir)
|
shutil.move(tmpdir, target_dir)
|
||||||
else:
|
else:
|
||||||
# Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
|
# Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
|
||||||
raise(err)
|
raise err
|
||||||
|
|
||||||
import launch
|
import launch
|
||||||
launch.run_extension_installer(target_dir)
|
launch.run_extension_installer(target_dir)
|
||||||
|
Loading…
Reference in New Issue
Block a user