This is a patch to parse "Accept:" directives in STATUS, e.g.,
[[[
* r42
Some text.
Accept: theirs-conflict
Votes:
+1: jrandom
]]]
It's not tested yet, hence sending it to dev@ and not commits@.
(Basically, putting it here while waiting for an STATUS entry to try the
code on.)
Thanks to Ben for making me finally put this one to code. :-)
Daniel
[[[
Teach backport.pl to pass --accept=%s to 'svn merge'.
* tools/dist/backport.pl
(parse_entry): Parse "Accept: %s" headers.
(handle_entry): Propagate them.
(merge): Pass --accept=%s to 'svn merge'.
]]]
[[[
Index: tools/dist/backport.pl
===================================================================
--- tools/dist/backport.pl (revision 1418755)
+++ tools/dist/backport.pl (working copy)
@@ -76,15 +76,16 @@ sub merge {
my $backupfile = "backport_pl.$$.tmp";
+ $mergeargs = $entry{accept} ? "--accept=$entry{accept} " : "";
if ($entry{branch}) {
# NOTE: This doesn't escape the branch into the pattern.
$pattern = sprintf '\V\(%s branch(es)?\|branches\/%s\|Branch(es)?:\n *%s\)', $entry{branch}, $entry{branch}, $entry{branch};
- $mergeargs = "--reintegrate $BRANCHES/$entry{branch}";
+ $mergeargs .= "--reintegrate $BRANCHES/$entry{branch}";
print $logmsg_fh "Reintegrate the $entry{header}:";
print $logmsg_fh "";
} elsif (@{$entry{revisions}}) {
$pattern = '^ [*] \V' . 'r' . $entry{revisions}->[0];
- $mergeargs = join " ", (map { "-c$_" } @{$entry{revisions}}), '^/subversion/trunk';
+ $mergeargs .= join " ", (map { "-c$_" } @{$entry{revisions}}), '^/subversion/trunk';
if (@{$entry{revisions}} > 1) {
print $logmsg_fh "Merge the $entry{header} from trunk:";
print $logmsg_fh "";
@@ -153,7 +154,7 @@ sub sanitize_branch {
# TODO: may need to parse other headers too?
sub parse_entry {
my @lines = @_;
- my (@revisions, @logsummary, $branch, @votes);
+ my ($accept, @revisions, @logsummary, $branch, @votes);
# @lines = @_;
# strip first three spaces
@@ -176,6 +177,11 @@ sub parse_entry {
unshift @votes, pop until $_[-1] =~ /^\s*Votes:/ or not defined $_[-1];
pop;
+ # accept
+ ($accept) = map { /^Accept: ([\w-]+)/ and $1 } @_;
+ warn "Invalid 'Accept' value '$accept'"
+ if $accept and `svn --accept=$accept 2>&1 >/dev/null` =~ /\Q'$accept'/;
+
# branch
while (@_) {
shift and next unless $_[0] =~ s/^\s*Branch(es)?:\s*//;
@@ -195,6 +201,7 @@ sub parse_entry {
header => $header,
votes => [@votes],
entry => [@lines],
+ accept => $accept,
);
}
@@ -211,6 +218,7 @@ sub handle_entry {
print "$BRANCHES/$entry{branch}" if $entry{branch};
print "";
print for @{$entry{logsummary}};
+ print "Accept: $accept" if $accept;
print "";
print for @{$entry{votes}};
print "";
]]]
Received on 2012-12-08 23:24:07 CET