subtree: fix argument validation in add/pull/push
When working with a remote repository add/pull/push do not accept a <refspec> as parameter but just a <ref>. They should accept any well-formatted ref name. This patch: - relaxes the check the <ref> argument in "git subtree add <repo>" (previous code would not accept a ref name that does not exist locally too, new code only ensures that the ref is well formatted) - add the same check in "git subtree pull/push" + check the number of parameters - update the doc to use <ref> instead of <refspec> Signed-off-by: Anthony Baire <Anthony.Baire@irisa.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
d2446dfd7f
commit
1c3e0f007c
@ -9,10 +9,10 @@ if [ $# -eq 0 ]; then
|
||||
fi
|
||||
OPTS_SPEC="\
|
||||
git subtree add --prefix=<prefix> <commit>
|
||||
git subtree add --prefix=<prefix> <repository> <commit>
|
||||
git subtree add --prefix=<prefix> <repository> <ref>
|
||||
git subtree merge --prefix=<prefix> <commit>
|
||||
git subtree pull --prefix=<prefix> <repository> <refspec...>
|
||||
git subtree push --prefix=<prefix> <repository> <refspec...>
|
||||
git subtree pull --prefix=<prefix> <repository> <ref>
|
||||
git subtree push --prefix=<prefix> <repository> <ref>
|
||||
git subtree split --prefix=<prefix> <commit...>
|
||||
--
|
||||
h,help show the help
|
||||
@ -489,6 +489,12 @@ ensure_clean()
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_valid_ref_format()
|
||||
{
|
||||
git check-ref-format "refs/heads/$1" ||
|
||||
die "'$1' does not look like a ref"
|
||||
}
|
||||
|
||||
cmd_add()
|
||||
{
|
||||
if [ -e "$dir" ]; then
|
||||
@ -508,8 +514,7 @@ cmd_add()
|
||||
# specified directory. Allowing a refspec might be
|
||||
# misleading because we won't do anything with any other
|
||||
# branches fetched via the refspec.
|
||||
git rev-parse -q --verify "$2^{commit}" >/dev/null ||
|
||||
die "'$2' does not refer to a commit"
|
||||
ensure_valid_ref_format "$2"
|
||||
|
||||
"cmd_add_repository" "$@"
|
||||
else
|
||||
@ -699,7 +704,11 @@ cmd_merge()
|
||||
}
|
||||
|
||||
cmd_pull()
|
||||
{
|
||||
if [ $# -ne 2 ]; then
|
||||
die "You must provide <repository> <ref>"
|
||||
fi
|
||||
ensure_clean
|
||||
ensure_valid_ref_format "$2"
|
||||
git fetch "$@" || exit $?
|
||||
revs=FETCH_HEAD
|
||||
@ -709,8 +718,9 @@ cmd_pull()
|
||||
|
||||
cmd_push()
|
||||
{
|
||||
if [ $# -ne 2 ]; then
|
||||
if [ $# -ne 2 ]; then
|
||||
die "You must provide <repository> <ref>"
|
||||
fi
|
||||
ensure_valid_ref_format "$2"
|
||||
if [ -e "$dir" ]; then
|
||||
repository=$1
|
||||
|
Reference in New Issue
Block a user