tags 319072 patch thanks On Tue, Jul 19, 2005 at 06:23:55PM +0100, Colin Watson wrote: > Package: devscripts > Version: 2.8.14 > Severity: wishlist > > To go along with svnpath in current trunk, here's an archpath. It works > with either tla or baz, and has a fairly similar interface to svnpath > except that the branch handling is a bit different to support the way > one normally works in arch (or at least how I normally work).
... and here's the corresponding debcommit patch. I also fixed the broken NAME header in its man page. -- Colin Watson [EMAIL PROTECTED]
Index: debcommit.pl =================================================================== --- debcommit.pl (revision 171) +++ debcommit.pl (working copy) @@ -1,6 +1,6 @@ #!/usr/bin/perl -=head1 NAME debcommit +=head1 NAME debcommit - commit changes to a package @@ -11,8 +11,8 @@ =head1 DESCRIPTION debcommit generates a commit message based on new text in debian/changelog, -and commits the change to a package's cvs or svn repository. It must be run -in a cvs or svn working copy for the package. +and commits the change to a package's cvs, svn, or arch repository. It must +be run in a cvs, svn, or arch working copy for the package. =head1 OPTIONS @@ -21,7 +21,7 @@ =item -r --release Commit a release of the package. The version number is determined from -debian/changelog, and is used to tag the package in cvs or svn. +debian/changelog, and is used to tag the package in cvs, svn, or arch. Note that svn tagging conventions vary, so debcommit uses L<svnpath(1)> to determine where the tag should be placed in the @@ -90,6 +90,16 @@ elsif (-d "CVS") { return "CVS"; } + elsif (-d "{arch}") { + # I don't think we can tell just from the working copy + # whether to use tla or baz, so try baz if it's available, + # otherwise fall back to tla. + if (system ("baz --version >/dev/null 2>&1") == 0) { + return "baz"; + } else { + return "tla"; + } + } else { die "not in a cvs or subversion working copy\n"; } @@ -115,6 +125,11 @@ die "commit failed\n"; } } + elsif ($prog eq 'tla' || $prog eq 'baz') { + if (! action($prog, "commit", "-s", $message)) { + die "commit failed\n"; + } + } else { die "unknown program $prog"; } @@ -143,14 +158,37 @@ die "failed tagging with $tag\n"; } } + elsif ($prog eq 'tla' || $prog eq 'baz') { + my $archpath=`archpath`; + chomp $archpath; + my $tagpath=`archpath releases--\Q$tag\E`; + chomp $tagpath; + my $subcommand; + if ($prog eq 'baz') { + $subcommand="branch"; + } else { + $subcommand="tag"; + } + + if (! action($prog, $subcommand, $archpath, $tagpath)) { + die "failed tagging with $tag\n"; + } + } } sub getmessage { my $ret; - if ($prog eq 'cvs' || $prog eq 'svn') { + if ($prog eq 'cvs' || $prog eq 'svn' || + $prog eq 'tla' || $prog eq 'baz') { $ret=''; - foreach my $line (`$prog diff debian/changelog`) { + my $subcommand; + if ($prog eq 'cvs' || $prog eq 'svn') { + $subcommand = 'diff'; + } else { + $subcommand = 'file-diff'; + } + foreach my $line (`$prog $subcommand debian/changelog`) { next unless $line=~/^\+ /; $line=~s/^\+ //; next if $line=~/^\s*\[.*\]\s*$/; # maintainer name