}
sub ffq_prev_branchinfo () {
- # => ('status', "message", [$current, $ffq_prev, $gdrlast])
- # 'status' may be
- # branch message is undef
- # weird-symref } no $current,
- # notbranch } no $ffq_prev
my $current = git_get_symref();
- return ('detached', 'detached HEAD') unless defined $current;
- return ('weird-symref', 'HEAD symref is not to refs/')
- unless $current =~ m{^refs/};
- my $ffq_prev = "refs/$ffq_refprefix/$'";
- my $gdrlast = "refs/$gdrlast_refprefix/$'";
- printdebug "ffq_prev_branchinfo branch current $current\n";
- return ('branch', undef, $current, $ffq_prev, $gdrlast);
+ return gdr_ffq_prev_branchinfo($current);
}
sub record_ffq_prev_deferred () {
}
return if $invert;
my $lrval = git_get_ref $lrref;
- return unless defined $lrval;
+ return unless length $lrval;
if (is_fast_fwd $lrval, $currentval) {
print "OK, you are ahead of $lrref\n" or die $!;
my $new_version = (new Dpkg::Version scalar(shift @ARGV), check => 1);
my $new_upstream_version = $new_version->version();
- my $new_upstream = git_rev_parse (shift @ARGV // 'upstream');
+ my $new_upstream = shift @ARGV;
+ if (!defined $new_upstream) {
+ my @tried;
+ # todo: at some point maybe use git-deborig to do this
+ foreach my $tagpfx ('', 'v', 'upstream/') {
+ my $tag = $tagpfx.(dep14_version_mangle $new_upstream_version);
+ $new_upstream = git_get_ref "refs/tags/$tag";
+ last if length $new_upstream;
+ push @tried, $tag;
+ }
+ if (!length $new_upstream) {
+ fail "Could not determine appropriate upstream commitish.\n".
+ " (Tried these tags: @tried)\n".
+ " Check version, and specify upstream commitish explicitly.";
+ }
+ }
+ $new_upstream = git_rev_parse $new_upstream;
record_ffq_auto();
sub cmd_status () {
badusage "no arguments allowed" if @ARGV;
+ # todo: gdr status should print divergence info
+ # todo: gdr status should print upstream component(s) info
+ # todo: gdr should leave/maintain some refs with this kind of info ?
+
my $oldest = [ 0 ];
my $newest;
my $note = sub {
'[git-debrebase: export and commit patches]',
];
};
- my $d = get_differs $head, $out;
- if ($d == 0) {
- return undef; # nothing to do
- } elsif ($d == D_PAT_ADD) {
- return $out; # OK
- } else {
- fail "Patch export produced patch amendments".
- " (abandoned output commit $out).".
- " Try laundering first.";
- }
+ return $out;
}
sub cmd_make_patches () {
+ my $opt_quiet_would_amend;
+ GetOptions('quiet-would-amend!', \$opt_quiet_would_amend)
+ or die badusage("bad options to make-patches");
badusage "no arguments allowed" if @ARGV;
my $old_head = get_head();
my $new = make_patches $old_head;
- snags_maybe_bail();
- if (!$new) {
+ my $d = get_differs $old_head, $new;
+ if ($d == 0) {
fail "No (more) patches to export." unless $opt_noop_ok;
return;
+ } elsif ($d == D_PAT_ADD) {
+ snags_maybe_bail();
+ update_head_checkout $old_head, $new, 'make-patches';
+ } else {
+ print STDERR failmsg
+ "Patch export produced patch amendments".
+ " (abandoned output commit $new).".
+ " Try laundering first."
+ unless $opt_quiet_would_amend;
+ finish 7;
}
- update_head_checkout $old_head, $new, 'make-patches';
}
sub cmd_convert_from_gbp () {