+our %defcfg = ('dgit.default.distro' => 'debian',
+ 'dgit.default.username' => '',
+ 'dgit.default.archive-query-default-component' => 'main',
+ 'dgit.default.ssh' => 'ssh',
+ 'dgit-distro.debian.git-host' => 'git.debian.org',
+ 'dgit-distro.debian.git-proto' => 'git+ssh://',
+ 'dgit-distro.debian.git-path' => '/git/dgit-repos',
+ 'dgit-distro.debian.git-check' => 'ssh-cmd',
+ 'dgit-distro.debian.git-create' => 'ssh-cmd',
+ 'dgit-distro.debian.mirror' => 'http://http.debian.net/debian/');
+
+sub cfg {
+ foreach my $c (@_) {
+ my $v;
+ {
+ local ($debug) = $debug-1;
+ $v = cmdoutput_errok(@git, qw(config --), $c);
+ };
+ if ($?==0) {
+ return $v;
+ } elsif ($?!=256) {
+ die "$c $?";
+ }
+ my $dv = $defcfg{$c};
+ return $dv if defined $dv;
+ }
+ return undef;
+}
+
+sub access_distro () {
+ return cfg("dgit-suite.$suite.distro",
+ "dgit.default.distro");
+}
+
+sub access_cfg ($) {
+ my ($key) = @_;
+ my $distro = access_distro();
+ my $value = cfg("dgit-distro.$distro.$key",
+ "dgit.default.$key");
+ return $value;
+}
+
+sub access_gituserhost () {
+ my $user = access_cfg('git-user');
+ my $host = access_cfg('git-host');
+ return defined($user) && length($user) ? "$user\@$host" : $host;
+}
+
+sub access_giturl () {
+ my $url = access_cfg('git-url');
+ if (!defined $url) {
+ $url =
+ access_cfg('git-proto').
+ access_gituserhost().
+ access_cfg('git-path');
+ }
+ return "$url/$package.git";
+}
+