Исправлен прогрессбар

master3.3
Mike khiretskiy 10 years ago
parent 60bd3b1129
commit 851663533a

@ -44,12 +44,16 @@ class PercentProgress(processProgress):
part: количество прогрессов в программе
delimeter: разделители строк по умолчанию \n и \r
cachefilter: фильтр вывода программы (регулярная строка)
startpart: используется для вывода процентов прогрессбар
с определенного места (0 по умолчанию)
end: конечный прогрессбар (по умолчанию)
"""
def init(self,*args,**kwargs):
self.rePerc = re.compile("(\d+)%",re.S)
self.part = kwargs.get("part",1)
self.add_offset = 100 / self.part
self.offset = 0
self.offset = 0 + kwargs.get("startpart",0)*self.add_offset
self.is_end = kwargs.get("end",True)
self.stderr = STDOUT
self.delimeter = re.compile("[%s]"%kwargs.get("delimeter","\n\r"))
self.cachedata = re.compile(kwargs.get("cachefilter",
@ -58,11 +62,13 @@ class PercentProgress(processProgress):
def processInit(self):
self.percent = 0
self.showval = 0
return 0
if not self.offset:
return 0
def processEnd(self):
self.percent = 100
return 100
if self.is_end:
self.percent = 100
return 100
def processString(self,strdata):
match = self.rePerc.search(strdata)
@ -128,7 +134,7 @@ class Git:
if cb_progress:
gitClone = PercentProgress(self._git,"clone","-q",
"--no-single-branch","--progress","--verbose",
"--depth=1","-b",branch,url,rpath,part=3,stderr=STDOUT)
"--depth=1","-b",branch,url,rpath,part=4,stderr=STDOUT)
for perc in gitClone.progress():
cb_progress(perc)
else:
@ -192,9 +198,11 @@ class Git:
else:
wholeCommand = [self._git,"--git-dir",git_dir,
"--work-tree",rpath]+commands[cmd]
if cb_progress and commands[cmd][0] == "fetch":
if cb_progress and commands[cmd][0] in ("fetch","checkout"):
progressParam = {'fetch': {'part':4,'end':False},
'checkout':{'part':4,'startpart':3}}
gitClone = PercentProgress(*wholeCommand+["--progress","--verbose"],
part=3,stderr=STDOUT)
stderr=STDOUT,**progressParam)
for perc in gitClone.progress():
cb_progress(perc)
else:
@ -411,7 +419,7 @@ class Update:
if revision != "last":
if revision == git._getCurrentCommit(rpath):
if git._getBranch(rpath) == branch:
return
return True
# получить изменения из удаленного репозитория
git._fetchRepository(rpath,cb_progress=cb_progress)
# если текущая ветка не соответствует нужной
@ -429,9 +437,6 @@ class Update:
"""
Синхронизировать репозитории
"""
# TODO: оновление shallow репозитория возможно придется
# скачивать конкретную ревизию через refs/revs
# TODO: прогресс скачивания (обновление shallow)
dv = self.clVars
url, rpath, revision, branch = (
dv.Select(["cl_update_rep_url","cl_update_rep_path",

Loading…
Cancel
Save