• Jeff King's avatar
    receive-pack: detect push to current branch of non-bare repo · 986e8239
    Jeff King authored
    Pushing into the currently checked out branch of a non-bare
    repository can be dangerous; the HEAD then loses sync with
    the index and working tree, and it looks in the receiving
    repo as if the pushed changes have been reverted in the
    index (since they were never there in the first place).
    
    This patch adds a safety valve that checks for this
    condition and either generates a warning or denies the
    update. We trigger the check only on a non-bare repository,
    since a bare repo does not have a working tree (and in fact,
    pushing to the HEAD branch is a common workflow for
    publishing repositories).
    
    The behavior is configurable via receive.denyCurrentBranch,
    defaulting to "warn" so as not to break existing setups
    (though it may, after a deprecation period, switch to
    "refuse" by default). For users who know what they are doing
    and want to silence the warning (e.g., because they have a
    post-receive hook that reconciles the HEAD and working
    tree), they can turn off the warning by setting it to false
    or "ignore".
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    986e8239
builtin-receive-pack.c 14.8 KB