Subject: [PATCH 0/10 v3] improve refspec handling in push

From: Steffen Prohaska <[email-masked]>
Date: Sun, 28 Oct 2007 18:46:11 +0100

This is a replacement for sp/push-refspec
(93e296613306311ef02dabb19a6538be2f52aa1c).

Compared to the v2 series the following changed (v2 patch numbers):
    1/8 implementation should be better readable.
    2/8 adjusted to 1/8 changes.
    3/8 removed.
    4/8 removed.
    5/8 much simpler implementation, second patch "git push HEAD" added.
    6/8 chose more explicit naming
        ref_abbrev_matches_full_with_rev_parse_rules;
        unified argument order with ref_matches_abbrev,
        which was renamed to ref_abbrev_matches_full_with_fetch_rules.
    7/8 adjusted to 6/8 changes.
    8/8 report summary;
        --verbose fixed;
        added test that remote tracking branches are unchanged.

All tests pass.

Here's a summary of the series:

 Documentation/git-http-push.txt |    6 ++
 Documentation/git-push.txt      |   16 +++-
 Documentation/git-send-pack.txt |   18 +++-
 builtin-push.c                  |   23 +++++-
 cache.h                         |    1 +
 http-push.c                     |    9 ++-
 remote.c                        |   50 +++++++-----
 remote.h                        |    2 +-
 send-pack.c                     |   77 +++++++++++++----
 sha1_name.c                     |   14 +++
 t/t5516-fetch-push.sh           |  181 ++++++++++++++++++++++++++++++++++++++-
 transport.c                     |   12 ++-
 transport.h                     |    2 +
 13 files changed, 358 insertions(+), 53 deletions(-)

 [PATCH 01/10] push: change push to fail if short refname does not exist
 [PATCH 02/10] push: teach push new flag --create

 [PATCH 03/10] push: support pushing HEAD to real branch name
 [PATCH 04/10] push: add "git push HEAD" shorthand for 'push current branch to default repo'
    Junio doesn't like this patch. But I had it ready, so here it is.
    Junio described an alternative in
    http://marc.info/?l=git&m=119358745026345&w=2

 [PATCH 05/10] rename ref_matches_abbrev() to ref_abbrev_matches_full_with_fetch_rules()
 [PATCH 06/10] add ref_abbrev_matches_full_with_rev_parse_rules() comparing abbrev with full ref name
 [PATCH 07/10] push: use same rules as git-rev-parse to resolve refspecs
    Maybe the matching rules could be further unified.
    Code cleanup would be needed here.
    But this is a different story.

 [PATCH 08/10] push: teach push to accept --verbose option
 [PATCH 09/10] push: teach push to pass --verbose option to transport layer
 [PATCH 10/10] push: teach push to be quiet if local ref is strict subset of remote ref

    Steffen