git-push: documentation and tests for pushing only branches

Commit 098e711e caused git-push to match only branches when
considering which refs to push. This patch updates the
documentation accordingly and adds a test for this behavior.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King
2007-09-18 04:15:34 -04:00
committed by Junio C Hamano
parent bf1ee63678
commit 5c633a4cbe
3 changed files with 14 additions and 4 deletions

View File

@ -48,7 +48,7 @@ even if it does not result in a fast forward update.
Note: If no explicit refspec is found, (that is neither Note: If no explicit refspec is found, (that is neither
on the command line nor in any Push line of the on the command line nor in any Push line of the
corresponding remotes file---see below), then all the corresponding remotes file---see below), then all the
refs that exist both on the local side and on the remote heads that exist both on the local side and on the remote
side are updated. side are updated.
+ +
`tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`. `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
@ -61,7 +61,7 @@ the remote repository.
\--all:: \--all::
Instead of naming each ref to push, specifies that all Instead of naming each ref to push, specifies that all
refs be pushed. refs under `$GIT_DIR/refs/heads/` be pushed.
\--tags:: \--tags::
All refs under `$GIT_DIR/refs/tags` are pushed, in All refs under `$GIT_DIR/refs/tags` are pushed, in

View File

@ -32,7 +32,7 @@ OPTIONS
\--all:: \--all::
Instead of explicitly specifying which refs to update, Instead of explicitly specifying which refs to update,
update all refs that locally exist. update all heads that locally exist.
\--force:: \--force::
Usually, the command refuses to update a remote ref that Usually, the command refuses to update a remote ref that
@ -70,7 +70,7 @@ With '--all' flag, all refs that exist locally are transferred to
the remote side. You cannot specify any '<ref>' if you use the remote side. You cannot specify any '<ref>' if you use
this flag. this flag.
Without '--all' and without any '<ref>', the refs that exist Without '--all' and without any '<ref>', the heads that exist
both on the local side and on the remote side are updated. both on the local side and on the remote side are updated.
When one or more '<ref>' are specified explicitly, it can be either a When one or more '<ref>' are specified explicitly, it can be either a

View File

@ -113,4 +113,14 @@ test_expect_success \
! git diff .git/refs/heads/master victim/.git/refs/heads/master ! git diff .git/refs/heads/master victim/.git/refs/heads/master
' '
test_expect_success \
'pushing does not include non-head refs' '
mkdir parent && cd parent &&
git-init && touch file && git-add file && git-commit -m add &&
cd .. &&
git-clone parent child && cd child && git-push --all &&
cd ../parent &&
git-branch -a >branches && ! grep -q origin/master branches
'
test_done test_done