sub start_cmd {
my ($self, $cmd, $opt, $fini) = @_;
do_reap($self);
- utf8::decode(my $msg = "# @$cmd");
- $self->{lei}->qerr($msg);
+ $self->{lei}->qerr("# @$cmd");
return if $self->{dry_run};
$LIVE->{spawn($cmd, undef, $opt)} = [ \&reap_cmd, $self, $cmd, $fini ]
}
}
my $d = $self->{-ent} ? $self->{-ent}->{description} : undef;
- $self->{'txt.description'} = $d if defined $d;
+ utf8::encode($self->{'txt.description'} = $d) if defined $d;
(!defined($d) && !$end) and
_get_txt_start($self, 'description', $fini);
$new = $self->{-ent}->{owner} // return;
$cur = $self->{-local_manifest}->{$key}->{owner} // "\0";
return if $cur eq $new;
+ utf8::encode($new); # to octets
my $cmd = [ qw(git config -f), "$dst/config", 'gitweb.owner', $new ];
start_cmd($self, $cmd, { 2 => $self->{lei}->{2} });
}
my $env = { TEST_DOCROOT => "$tmpdir/src", PI_CONFIG => $pi_config };
$td = start_script($cmd, $env, { 3 => $tcp });
my $fp = sha1_hex(my $refs = xqx([@git, 'show-ref']));
+ my $alice = "\x{100}lice";
$m = {
'/a.git' => {
fingerprint => $fp,
modified => 1,
- owner => 'Alice',
+ owner => $alice,
+ description => "${alice}'s repo",
},
'/b.git' => {
fingerprint => $fp,
--objstore= -p -q), $url, "$tmpdir/dst", '--exit-code'];
ok(run_script($cmd), 'clone');
is(xqx([qw(git config gitweb.owner)], { GIT_DIR => "$tmpdir/dst/a.git" }),
- "Alice\n", 'a.git gitweb.owner set');
+ "\xc4\x80lice\n", 'a.git gitweb.owner set');
is(xqx([qw(git config gitweb.owner)], { GIT_DIR => "$tmpdir/dst/b.git" }),
"Bob\n", 'b.git gitweb.owner set');
+my $desc = PublicInbox::Git::try_cat("$tmpdir/dst/a.git/description");
+is($desc, "\xc4\x80lice's repo\n", 'description set');
my $dst_pl = "$tmpdir/dst/projects.list";
my $dst_mf = "$tmpdir/dst/manifest.js.gz";