[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";
        }

Attachment: signature.asc
Description: Digital signature

Reply via email to