Merge branch 'jh/p4-human-unit-numbers'
The way "git p4" shows file sizes in its output has been updated to use human-readable units. * jh/p4-human-unit-numbers: git-p4: show progress as an integer git-p4: print size values in appropriate unitsmaint
commit
66f6c18e5b
27
git-p4.py
27
git-p4.py
|
@ -59,6 +59,18 @@ p4_access_checked = False
|
||||||
re_ko_keywords = re.compile(br'\$(Id|Header)(:[^$\n]+)?\$')
|
re_ko_keywords = re.compile(br'\$(Id|Header)(:[^$\n]+)?\$')
|
||||||
re_k_keywords = re.compile(br'\$(Id|Header|Author|Date|DateTime|Change|File|Revision)(:[^$\n]+)?\$')
|
re_k_keywords = re.compile(br'\$(Id|Header|Author|Date|DateTime|Change|File|Revision)(:[^$\n]+)?\$')
|
||||||
|
|
||||||
|
def format_size_human_readable(num):
|
||||||
|
""" Returns a number of units (typically bytes) formatted as a human-readable
|
||||||
|
string.
|
||||||
|
"""
|
||||||
|
if num < 1024:
|
||||||
|
return '{:d} B'.format(num)
|
||||||
|
for unit in ["Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]:
|
||||||
|
num /= 1024.0
|
||||||
|
if num < 1024.0:
|
||||||
|
return "{:3.1f} {}B".format(num, unit)
|
||||||
|
return "{:.1f} YiB".format(num)
|
||||||
|
|
||||||
def p4_build_cmd(cmd):
|
def p4_build_cmd(cmd):
|
||||||
"""Build a suitable p4 command line.
|
"""Build a suitable p4 command line.
|
||||||
|
|
||||||
|
@ -2957,7 +2969,8 @@ class P4Sync(Command, P4UserMap):
|
||||||
size = int(self.stream_file['fileSize'])
|
size = int(self.stream_file['fileSize'])
|
||||||
else:
|
else:
|
||||||
size = 0 # deleted files don't get a fileSize apparently
|
size = 0 # deleted files don't get a fileSize apparently
|
||||||
sys.stdout.write('\r%s --> %s (%i MB)\n' % (file_path, relPath, size/1024/1024))
|
sys.stdout.write('\r%s --> %s (%s)\n' % (
|
||||||
|
file_path, relPath, format_size_human_readable(size)))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
(type_base, type_mods) = split_p4_type(file["type"])
|
(type_base, type_mods) = split_p4_type(file["type"])
|
||||||
|
@ -3052,9 +3065,8 @@ class P4Sync(Command, P4UserMap):
|
||||||
if not err and 'fileSize' in self.stream_file:
|
if not err and 'fileSize' in self.stream_file:
|
||||||
required_bytes = int((4 * int(self.stream_file["fileSize"])) - calcDiskFree())
|
required_bytes = int((4 * int(self.stream_file["fileSize"])) - calcDiskFree())
|
||||||
if required_bytes > 0:
|
if required_bytes > 0:
|
||||||
err = 'Not enough space left on %s! Free at least %i MB.' % (
|
err = 'Not enough space left on %s! Free at least %s.' % (
|
||||||
os.getcwd(), required_bytes/1024/1024
|
os.getcwd(), format_size_human_readable(required_bytes))
|
||||||
)
|
|
||||||
|
|
||||||
if err:
|
if err:
|
||||||
f = None
|
f = None
|
||||||
|
@ -3098,7 +3110,9 @@ class P4Sync(Command, P4UserMap):
|
||||||
size = int(self.stream_file["fileSize"])
|
size = int(self.stream_file["fileSize"])
|
||||||
if size > 0:
|
if size > 0:
|
||||||
progress = 100*self.stream_file['streamContentSize']/size
|
progress = 100*self.stream_file['streamContentSize']/size
|
||||||
sys.stdout.write('\r%s %d%% (%i MB)' % (self.stream_file['depotFile'], progress, int(size/1024/1024)))
|
sys.stdout.write('\r%s %d%% (%s)' % (
|
||||||
|
self.stream_file['depotFile'], progress,
|
||||||
|
format_size_human_readable(size)))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
self.stream_have_file_info = True
|
self.stream_have_file_info = True
|
||||||
|
@ -3611,7 +3625,8 @@ class P4Sync(Command, P4UserMap):
|
||||||
self.updateOptionDict(description)
|
self.updateOptionDict(description)
|
||||||
|
|
||||||
if not self.silent:
|
if not self.silent:
|
||||||
sys.stdout.write("\rImporting revision %s (%s%%)" % (change, cnt * 100 / len(changes)))
|
sys.stdout.write("\rImporting revision %s (%d%%)" % (
|
||||||
|
change, (cnt * 100) // len(changes)))
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
cnt = cnt + 1
|
cnt = cnt + 1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue