[Anand Kumria]
> my $subcommand;
> + my $subcommandopt;
> if ($prog eq 'cvs' || $prog eq 'svn' || $prog eq 'svk' ||
> $prog eq 'bzr' || $prog eq 'git' ) {
> $subcommand = 'diff';
> } else {
> $subcommand = 'file-diff';
> }
> - foreach my $line (`$prog $subcommand debian/changelog`) {
> + if ($prog eq 'git') {
> + $subcommandopt = '--cached';
> + }
> + foreach my $line (`$prog $subcommand $subcommandopt debian/changelog`) {
I like my way better. (Though it's untested.) Seems more extensible.
Peter
--- debcommit
+++ debcommit
@@ -222,20 +222,22 @@
if ($prog eq 'cvs' || $prog eq 'svn' || $prog eq 'svk' ||
$prog eq 'tla' || $prog eq 'baz' || $prog eq 'bzr' || $prog eq 'git') {
$ret='';
- my $subcommand;
- if ($prog eq 'cvs' || $prog eq 'svn' || $prog eq 'svk' ||
- $prog eq 'bzr' || $prog eq 'git' ) {
- $subcommand = 'diff';
- } else {
- $subcommand = 'file-diff';
+ my @diffcmd = ($prog, 'diff');
+ if ($prog eq 'tla' || $prog eq 'baz') {
+ @diffcmd = ($prog, 'file-diff');
+ } elsif ($prog eq 'git') {
+ @diffcmd = qw(git-diff --cached);
}
- foreach my $line (`$prog $subcommand debian/changelog`) {
+
+ open CHLOG, '-|', @diffcmd, 'debian/changelog'
+ or die "Cannot run $prog: $!";
+ foreach my $line (<CHLOG>) {
next unless $line=~/^\+ /;
$line=~s/^\+ //;
next if $line=~/^\s*\[.*\]\s*$/; # maintainer name
$ret.=$line;
}
-
+ close CHLOG;
if (! length $ret) {
die "Unable to determine commit message using $prog\nTry using the
-m flag.\n";
}
signature.asc
Description: Digital signature

