Skip to content
  • Christopher Tiwald's avatar
    push: Provide situational hints for non-fast-forward errors · f25950f3
    Christopher Tiwald authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    Pushing a non-fast-forward update to a remote repository will result in
    an error, but the hint text doesn't provide the correct resolution in
    every case. Give better resolution advice in three push scenarios:
    
    1) If you push your current branch and it triggers a non-fast-forward
    error, you should merge remote changes with 'git pull' before pushing
    again.
    
    2) If you push to a shared repository others push to, and your local
    tracking branches are not kept up to date, the 'matching refs' default
    will generate non-fast-forward errors on outdated branches. If this is
    your workflow, the 'matching refs' default is not for you. Consider
    setting the 'push.default' configuration variable to 'current' or
    'upstream' to ensure only your current branch is pushed.
    
    3) If you explicitly specify a ref that is not your current branch or
    push matching branches with ':', you will generate a non-fast-forward
    error if any pushed branch tip is out of date. You should checkout the
    offending branch and merge remote changes before pushing again.
    
    Teach transport.c to recognize these scenarios and configure push.c
    to hint for them. If 'git push's default behavior changes or we
    discover more scenarios, extension is easy. Standardize on the
    advice API and add three new advice variables, 'pushNonFFCurrent',
    'pushNonFFDefault', and 'pushNonFFMatching'. Setting any of these
    to 'false' will disable their affiliated advice. Setting
    'pushNonFastForward' to false will disable all three, thus preserving the
    config option for users who already set it, but guaranteeing new
    users won't disable push advice accidentally.
    
    Based-on-patch-by: default avatarJunio C Hamano <gitster@pobox.com>
    Signed-off-by: default avatarChristopher Tiwald <christiwald@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    f25950f3