chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
eb3b3a8
)
dgit: Allow --deliberately-not-fast-forward to override dgit's fast forward check
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 17 May 2015 13:16:23 +0000
(14:16 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 31 May 2015 10:54:14 +0000
(11:54 +0100)
dgit
patch
|
blob
|
history
diff --git
a/dgit
b/dgit
index 5d239d692155079085853cf93f0d383704657bd9..3d3628093e0d42e4ae8d9ac4ed22b05c429611d6 100755
(executable)
--- a/
dgit
+++ b/
dgit
@@
-1658,7
+1658,8
@@
sub sign_changes ($) {
}
}
}
}
-sub dopush () {
+sub dopush ($) {
+ my ($forceflag) = @_;
printdebug "actually entering push\n";
prep_ud();
printdebug "actually entering push\n";
prep_ud();
@@
-1737,7
+1738,6
@@
sub dopush () {
responder_send_command("param head $head");
responder_send_command("param csuite $csuite");
responder_send_command("param head $head");
responder_send_command("param csuite $csuite");
- my $forceflag = deliberately('not-fast-forward') ? '+' : '';
if ($forceflag && defined $lastpush_hash) {
git_for_each_tag_referring($lastpush_hash, sub {
my ($objid,$fullrefname,$tagname) = @_;
if ($forceflag && defined $lastpush_hash) {
git_for_each_tag_referring($lastpush_hash, sub {
my ($objid,$fullrefname,$tagname) = @_;
@@
-1902,17
+1902,27
@@
sub cmd_push {
if (check_for_git()) {
git_fetch_us();
}
if (check_for_git()) {
git_fetch_us();
}
+ my $forceflag = '';
if (fetch_from_archive()) {
if (fetch_from_archive()) {
- is_fast_fwd(lrref(), 'HEAD') or
+ if (is_fast_fwd(lrref(), 'HEAD')) {
+ # ok
+ } elsif (deliberately('not-fast-forward') ||
+ deliberately('TEST-not-fast-forward-dgit-only')) {
+ $forceflag = '+';
+ } else {
fail "dgit push: HEAD is not a descendant".
" of the archive's version.\n".
fail "dgit push: HEAD is not a descendant".
" of the archive's version.\n".
- "$us: To overwrite it, use git merge -s ours ".lrref().".";
+ "$us: To overwrite its contents,".
+ " use git merge -s ours ".lrref().".\n".
+ "$us: To rewind history, if permitted by the archive,".
+ " use --deliberately-not-fast-forward";
+ }
} else {
$new_package or
fail "package appears to be new in this suite;".
" if this is intentional, use --new";
}
} else {
$new_package or
fail "package appears to be new in this suite;".
" if this is intentional, use --new";
}
- dopush();
+ dopush(
$forceflag
);
}
#---------- remote commands' implementation ----------
}
#---------- remote commands' implementation ----------