summaryrefslogtreecommitdiff
path: root/Debian
diff options
context:
space:
mode:
Diffstat (limited to 'Debian')
-rw-r--r--Debian/Dgit.pm23
1 files changed, 23 insertions, 0 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm
index f68b7c9..9d2e471 100644
--- a/Debian/Dgit.pm
+++ b/Debian/Dgit.pm
@@ -57,6 +57,7 @@ BEGIN {
git_for_each_tag_referring is_fast_fwd
git_check_unmodified
git_reflog_action_msg git_update_ref_cmd
+ make_commit_text
$package_re $component_re $deliberately_re
$distro_re $versiontag_re $series_filename_re
$orig_f_comp_re $orig_f_sig_re $orig_f_tail_re
@@ -687,6 +688,28 @@ sub parsechangelog_loop ($$$) {
close CLOGS or $?==SIGPIPE or failedcmd @$clogcmd;
}
+sub make_commit_text ($) {
+ my ($text) = @_;
+ my ($out, $in);
+ my @cmd = (qw(git hash-object -w -t commit --stdin));
+ debugcmd "|",@cmd;
+ print Dumper($text) if $debuglevel > 1;
+ my $child = open2($out, $in, @cmd) or die $!;
+ my $h;
+ eval {
+ print $in $text or die $!;
+ close $in or die $!;
+ $h = <$out>;
+ $h =~ m/^\w+$/ or die;
+ $h = $&;
+ printdebug "=> $h\n";
+ };
+ close $out;
+ waitpid $child, 0 == $child or die "$child $!";
+ $? and failedcmd @cmd;
+ return $h;
+}
+
# ========== playground handling ==========
# terminology: