diff --git a/git-filter-repo b/git-filter-repo index e847b36..23f6510 100755 --- a/git-filter-repo +++ b/git-filter-repo @@ -2441,7 +2441,7 @@ class RepoAnalyze(object): with open(os.path.join(reportdir, "renames.txt"), 'w') as f: seen = set() for pathname,equiv_group in sorted(stats['equivalence'].iteritems(), - key=lambda x:x[1]): + key=lambda x:(x[1], x[0])): if equiv_group in seen: continue seen.add(equiv_group) @@ -2454,7 +2454,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("Deleted directories by reverse size")) f.write(_("Format: unpacked size, packed size, date deleted, directory name\n")) for dirname, size in sorted(dir_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): if (dir_deleted_data[dirname]): f.write(" {:10d} {:10d} {:10s} {}\n" .format(dir_size['unpacked'][dirname], @@ -2466,7 +2466,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("All directories by reverse size")) f.write(_("Format: unpacked size, packed size, date deleted, directory name\n")) for dirname, size in sorted(dir_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): f.write(" {:10d} {:10d} {:10s} {}\n" .format(dir_size['unpacked'][dirname], size, @@ -2478,7 +2478,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("Deleted extensions by reverse size")) f.write(_("Format: unpacked size, packed size, date deleted, extension name\n")) for extname, size in sorted(ext_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): if (ext_deleted_data[extname]): f.write(" {:10d} {:10d} {:10s} {}\n" .format(ext_size['unpacked'][extname], @@ -2490,7 +2490,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("All extensions by reverse size")) f.write(_("Format: unpacked size, packed size, date deleted, extension name\n")) for extname, size in sorted(ext_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): f.write(" {:10d} {:10d} {:10s} {}\n" .format(ext_size['unpacked'][extname], size, @@ -2502,7 +2502,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("Deleted paths by reverse accumulated size")) f.write(_("Format: unpacked size, packed size, date deleted, path name(s)\n")) for pathname, size in sorted(path_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): when = stats['file_deletions'].get(pathname, None) if when: f.write(" {:10d} {:10d} {:10s} {}\n" @@ -2515,7 +2515,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("All paths by reverse accumulated size")) f.write(_("Format: unpacked size, packed size, date deleted, pathectory name\n")) for pathname, size in sorted(path_size['packed'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): when = stats['file_deletions'].get(pathname, None) f.write(" {:10d} {:10d} {:10s} {}\n" .format(path_size['unpacked'][pathname], @@ -2528,7 +2528,7 @@ class RepoAnalyze(object): f.write("=== %s ===\n" % _("Files by sha and associated pathnames in reverse size")) f.write(_("Format: sha, unpacked size, packed size, filename(s) object stored as\n")) for sha, size in sorted(stats['packed_size'].iteritems(), - key=lambda x:x[1], reverse=True): + key=lambda x:(x[1],x[0]), reverse=True): if sha not in stats['names']: # Some objects in the repository might not be referenced, or not # referenced by the branches/tags the user cares about; skip them. diff --git a/t/t9390-filter-repo.sh b/t/t9390-filter-repo.sh index 8bc2d9b..9e24df0 100755 --- a/t/t9390-filter-repo.sh +++ b/t/t9390-filter-repo.sh @@ -457,8 +457,8 @@ test_expect_success C_LOCALE_OUTPUT '--analyze' ' f00c965d8307308469e537302baa73048488f162 21 37 numbers/small.num 2aa69a2a708eed00cb390e30f6bcc3eed773f390 20 36 whatever 51b95456de9274c9a95f756742808dfd480b9b35 13 29 [QcapriciousQ, QfickleQ, QmercurialQ] - 34b6a0c9d02cb6ef7f409f248c0c1224ce9dd373 5 20 [Qsequence/toQ, Qwords/toQ] 732c85a1b3d7ce40ec8f78fd9ffea32e9f45fae0 5 20 [Qsequence/knowQ, Qwords/knowQ] + 34b6a0c9d02cb6ef7f409f248c0c1224ce9dd373 5 20 [Qsequence/toQ, Qwords/toQ] 7ecb56eb3fa3fa6f19dd48bca9f971950b119ede 3 18 words/know EOF test_cmp expect blob-shas-and-paths.txt && @@ -502,12 +502,12 @@ test_expect_success C_LOCALE_OUTPUT '--analyze' ' 8 38 words/know 21 37 2005-04-07 numbers/small.num 20 36 whatever - 13 29 fickle 13 29 mercurial + 13 29 fickle 13 29 capricious 5 20 words/to - 5 20 sequence/know 5 20 sequence/to + 5 20 sequence/know EOF test_cmp expect path-all-sizes.txt &&