mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
![Felipe Contreras](/assets/img/avatar_default.png)
Since commit 9ba89f484e
git learned how to push to a remote branch using
the source @, for example:
git push origin @:master
However, if the right-hand side is missing, the push fails:
git push origin @
It is obvious what is the desired behavior, and allowing the push makes
things more consistent.
Additionally, @:master now has the same semantics as HEAD:master.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
97 lines
3.3 KiB
Bash
Executable file
97 lines
3.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='refspec parsing'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_refspec () {
|
|
kind=$1 refspec=$2 expect=$3
|
|
git config remote.frotz.url "." &&
|
|
git config --remove-section remote.frotz &&
|
|
git config remote.frotz.url "." &&
|
|
git config "remote.frotz.$kind" "$refspec" &&
|
|
if test "$expect" != invalid
|
|
then
|
|
title="$kind $refspec"
|
|
test='git ls-remote frotz'
|
|
else
|
|
title="$kind $refspec (invalid)"
|
|
test='test_must_fail git ls-remote frotz'
|
|
fi
|
|
test_expect_success "$title" "$test"
|
|
}
|
|
|
|
test_refspec push '' invalid
|
|
test_refspec push ':'
|
|
test_refspec push '::' invalid
|
|
test_refspec push '+:'
|
|
|
|
test_refspec fetch ''
|
|
test_refspec fetch ':'
|
|
test_refspec fetch '::' invalid
|
|
|
|
test_refspec push 'refs/heads/*:refs/remotes/frotz/*'
|
|
test_refspec push 'refs/heads/*:refs/remotes/frotz' invalid
|
|
test_refspec push 'refs/heads:refs/remotes/frotz/*' invalid
|
|
test_refspec push 'refs/heads/master:refs/remotes/frotz/xyzzy'
|
|
|
|
|
|
# These have invalid LHS, but we do not have a formal "valid sha-1
|
|
# expression syntax checker" so they are not checked with the current
|
|
# code. They will be caught downstream anyway, but we may want to
|
|
# have tighter check later...
|
|
|
|
: test_refspec push 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid
|
|
: test_refspec push 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid
|
|
|
|
test_refspec fetch 'refs/heads/*:refs/remotes/frotz/*'
|
|
test_refspec fetch 'refs/heads/*:refs/remotes/frotz' invalid
|
|
test_refspec fetch 'refs/heads:refs/remotes/frotz/*' invalid
|
|
test_refspec fetch 'refs/heads/master:refs/remotes/frotz/xyzzy'
|
|
test_refspec fetch 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid
|
|
test_refspec fetch 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid
|
|
|
|
test_refspec push 'master~1:refs/remotes/frotz/backup'
|
|
test_refspec fetch 'master~1:refs/remotes/frotz/backup' invalid
|
|
test_refspec push 'HEAD~4:refs/remotes/frotz/new'
|
|
test_refspec fetch 'HEAD~4:refs/remotes/frotz/new' invalid
|
|
|
|
test_refspec push 'HEAD'
|
|
test_refspec fetch 'HEAD'
|
|
test_refspec push '@'
|
|
test_refspec fetch '@'
|
|
test_refspec push 'refs/heads/ nitfol' invalid
|
|
test_refspec fetch 'refs/heads/ nitfol' invalid
|
|
|
|
test_refspec push 'HEAD:' invalid
|
|
test_refspec fetch 'HEAD:'
|
|
test_refspec push 'refs/heads/ nitfol:' invalid
|
|
test_refspec fetch 'refs/heads/ nitfol:' invalid
|
|
|
|
test_refspec push ':refs/remotes/frotz/deleteme'
|
|
test_refspec fetch ':refs/remotes/frotz/HEAD-to-me'
|
|
test_refspec push ':refs/remotes/frotz/delete me' invalid
|
|
test_refspec fetch ':refs/remotes/frotz/HEAD to me' invalid
|
|
|
|
test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
|
|
test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*-blah'
|
|
|
|
test_refspec fetch 'refs/heads*/for-linus:refs/remotes/mine/*'
|
|
test_refspec push 'refs/heads*/for-linus:refs/remotes/mine/*'
|
|
|
|
test_refspec fetch 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
|
|
test_refspec push 'refs/heads/*/*/for-linus:refs/remotes/mine/*' invalid
|
|
|
|
test_refspec fetch 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
|
|
test_refspec push 'refs/heads/*g*/for-linus:refs/remotes/mine/*' invalid
|
|
|
|
test_refspec fetch 'refs/heads/*/for-linus:refs/remotes/mine/*'
|
|
test_refspec push 'refs/heads/*/for-linus:refs/remotes/mine/*'
|
|
|
|
good=$(printf '\303\204')
|
|
test_refspec fetch "refs/heads/${good}"
|
|
bad=$(printf '\011tab')
|
|
test_refspec fetch "refs/heads/${bad}" invalid
|
|
|
|
test_done
|