]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-svn: set the OID length based on hash algorithm
authorbrian m. carlson <sandals@crustytoothpaste.net>
Mon, 22 Jun 2020 18:04:15 +0000 (18:04 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 22 Jun 2020 18:21:07 +0000 (11:21 -0700)
When reading the configuration or when creating a new repository, load
the extensions.objectFormat value and set the object ID length to 64 if
it's "sha256".  Note that we use the hex length in git-svn because most
of our processing is done on hex values, not binary ones.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Acked-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-svn.perl

index 00276c051bbda5be2fe87e34a9db3ef60fa82ed4..58f5a7ac8f80ac609fe1b35a558f936c7af42b98 100755 (executable)
@@ -500,6 +500,7 @@ sub do_git_init_db {
                command_noisy('config', "$pfx.preserve-empty-dirs", 'true');
                command_noisy('config', "$pfx.placeholder-filename", $$fname);
        }
+       load_object_format();
 }
 
 sub init_subdir {
@@ -1977,9 +1978,15 @@ sub read_git_config {
                        }
                }
        }
+       load_object_format();
        delete @$opts{@config_only} if @config_only;
 }
 
+sub load_object_format {
+       chomp(my $hash = `git config --get extensions.objectformat`);
+       $::oid_length = 64 if $hash eq 'sha256';
+}
+
 sub extract_metadata {
        my $id = shift or return (undef, undef, undef);
        my ($url, $rev, $uuid) = ($id =~ /^\s*git-svn-id:\s+(.*)\@(\d+)