diff --git a/dgit b/dgit
index 53f4713..2cbb2fd 100755
--- a/dgit
+++ b/dgit
@@ -2896,23 +2896,32 @@ sub splitbrain_pseudomerge ($$$$) {
 
     return $dgitview if is_fast_fwd $archive_hash, $dgitview;
 
-    my $t_dep14 = debiantag_maintview $i_arch_v->[0], access_basedistro;
-    my $i_dep14 = infopair_lrf_tag_lookup($t_dep14, "maintainer view tag");
-    my $t_dgit = debiantag_new $i_arch_v->[0], access_basedistro;
-    my $i_dgit = infopair_lrf_tag_lookup($t_dgit, "dgit view tag");
-    my $i_archive = [ $archive_hash, "current archive contents" ];
-
-    printdebug "splitbrain_pseudomerge i_archive @$i_archive\n";
-
-    infopair_cond_equal($i_dgit, $i_archive);
-    infopair_cond_ff($i_dep14, $i_dgit);
-    $overwrite_version // infopair_cond_ff($i_dep14, [ $maintview, 'HEAD' ]);
+    if (defined $overwrite_version) {
+    } elsif (!eval {
+	my $t_dep14 = debiantag_maintview $i_arch_v->[0], access_basedistro;
+	my $i_dep14 = infopair_lrf_tag_lookup($t_dep14, "maintainer view tag");
+	my $t_dgit = debiantag_new $i_arch_v->[0], access_basedistro;
+	my $i_dgit = infopair_lrf_tag_lookup($t_dgit, "dgit view tag");
+	my $i_archive = [ $archive_hash, "current archive contents" ];
+
+	printdebug "splitbrain_pseudomerge i_archive @$i_archive\n";
+
+	infopair_cond_equal($i_dgit, $i_archive);
+	infopair_cond_ff($i_dep14, $i_dgit);
+	infopair_cond_ff($i_dep14, [ $maintview, 'HEAD' ]);
+	1;
+    }) {
+	print STDERR <<END;
+$us: check failed (maybe --overwrite is needed, consult documentation)
+END
+	die "$@";
+    }
 
     my $r = pseudomerge_make_commit
 	$clogp, $dgitview, $archive_hash, $i_arch_v,
 	"dgit --quilt=$quilt_mode",
 	(defined $overwrite_version ? <<END_OVERWR : <<END_MAKEFF);
-Declare fast forward from $overwrite_version
+Declare fast forward from $i_arch_v->[0]
 END_OVERWR
 Make fast forward from $i_arch_v->[0]
 END_MAKEFF
@@ -2928,16 +2937,6 @@ sub plain_overwrite_pseudomerge ($$$) {
 
     my $i_arch_v = pseudomerge_version_check($clogp, $archive_hash);
 
-    my @tagformats = access_cfg_tagformats();
-    my @t_overwr =
-	map { $_->($i_arch_v->[0], access_basedistro) }
-	(grep { m/^(?:old|hist)$/ } @tagformats)
-	? \&debiantags : \&debiantag_new;
-    my $i_overwr = infopair_lrf_tag_lookup \@t_overwr, "previous version tag";
-    my $i_archive = [ $archive_hash, "current archive contents" ];
-
-    infopair_cond_equal($i_overwr, $i_archive);
-
     return $head if is_fast_fwd $archive_hash, $head;
 
     my $m = "Declare fast forward from $i_arch_v->[0]";
@@ -3162,14 +3161,15 @@ END
 	    $upstreamversion =~ s/-[^-]*$//;
 	    changedir $ud;
 	    quilt_make_fake_dsc($upstreamversion);
-	    my ($dgitview, $cachekey) =
+	    my $cachekey;
+	    ($dgithead, $cachekey) =
 		quilt_check_splitbrain_cache($actualhead, $upstreamversion);
-	    $dgitview or fail
+	    $dgithead or fail
  "--quilt=$quilt_mode but no cached dgit view:
  perhaps tree changed since dgit build[-source] ?";
 	    $split_brain = 1;
 	    $dgithead = splitbrain_pseudomerge($clogp,
-					       $actualhead, $dgitview,
+					       $actualhead, $dgithead,
 					       $archive_hash);
 	    $maintviewhead = $actualhead;
 	    changedir '../../../..';
