|
59 | 59 | re_ko_keywords = re.compile(br'\$(Id|Header)(:[^$\n]+)?\$')
|
60 | 60 | re_k_keywords = re.compile(br'\$(Id|Header|Author|Date|DateTime|Change|File|Revision)(:[^$\n]+)?\$')
|
61 | 61 |
|
| 62 | +def format_size_human_readable(num): |
| 63 | + """ Returns a number of units (typically bytes) formatted as a human-readable |
| 64 | + string. |
| 65 | + """ |
| 66 | + if num < 1024: |
| 67 | + return '{:d} B'.format(num) |
| 68 | + for unit in ["Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]: |
| 69 | + num /= 1024.0 |
| 70 | + if num < 1024.0: |
| 71 | + return "{:3.1f} {}B".format(num, unit) |
| 72 | + return "{:.1f} YiB".format(num) |
| 73 | + |
62 | 74 | def p4_build_cmd(cmd):
|
63 | 75 | """Build a suitable p4 command line.
|
64 | 76 |
|
@@ -2957,7 +2969,8 @@ def streamOneP4File(self, file, contents):
|
2957 | 2969 | size = int(self.stream_file['fileSize'])
|
2958 | 2970 | else:
|
2959 | 2971 | size = 0 # deleted files don't get a fileSize apparently
|
2960 |
| - sys.stdout.write('\r%s --> %s (%i MB)\n' % (file_path, relPath, size/1024/1024)) |
| 2972 | + sys.stdout.write('\r%s --> %s (%s)\n' % ( |
| 2973 | + file_path, relPath, format_size_human_readable(size))) |
2961 | 2974 | sys.stdout.flush()
|
2962 | 2975 |
|
2963 | 2976 | (type_base, type_mods) = split_p4_type(file["type"])
|
@@ -3052,9 +3065,8 @@ def streamP4FilesCb(self, marshalled):
|
3052 | 3065 | if not err and 'fileSize' in self.stream_file:
|
3053 | 3066 | required_bytes = int((4 * int(self.stream_file["fileSize"])) - calcDiskFree())
|
3054 | 3067 | if required_bytes > 0:
|
3055 |
| - err = 'Not enough space left on %s! Free at least %i MB.' % ( |
3056 |
| - os.getcwd(), required_bytes/1024/1024 |
3057 |
| - ) |
| 3068 | + err = 'Not enough space left on %s! Free at least %s.' % ( |
| 3069 | + os.getcwd(), format_size_human_readable(required_bytes)) |
3058 | 3070 |
|
3059 | 3071 | if err:
|
3060 | 3072 | f = None
|
@@ -3098,7 +3110,9 @@ def streamP4FilesCb(self, marshalled):
|
3098 | 3110 | size = int(self.stream_file["fileSize"])
|
3099 | 3111 | if size > 0:
|
3100 | 3112 | progress = 100*self.stream_file['streamContentSize']/size
|
3101 |
| - sys.stdout.write('\r%s %d%% (%i MB)' % (self.stream_file['depotFile'], progress, int(size/1024/1024))) |
| 3113 | + sys.stdout.write('\r%s %d%% (%s)' % ( |
| 3114 | + self.stream_file['depotFile'], progress, |
| 3115 | + format_size_human_readable(size))) |
3102 | 3116 | sys.stdout.flush()
|
3103 | 3117 |
|
3104 | 3118 | self.stream_have_file_info = True
|
@@ -3611,7 +3625,8 @@ def importChanges(self, changes, origin_revision=0):
|
3611 | 3625 | self.updateOptionDict(description)
|
3612 | 3626 |
|
3613 | 3627 | if not self.silent:
|
3614 |
| - sys.stdout.write("\rImporting revision %s (%s%%)" % (change, cnt * 100 / len(changes))) |
| 3628 | + sys.stdout.write("\rImporting revision %s (%d%%)" % ( |
| 3629 | + change, (cnt * 100) // len(changes))) |
3615 | 3630 | sys.stdout.flush()
|
3616 | 3631 | cnt = cnt + 1
|
3617 | 3632 |
|
|
0 commit comments