git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pull: refuse complete src:dst fetchspec arguments
@ 2009-10-20 18:23 Thomas Rast
  2009-10-20 18:37 ` [RFC! PATCH] " Thomas Rast
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: Thomas Rast @ 2009-10-20 18:23 UTC (permalink / raw)
  To: git

git-pull has historically accepted full fetchspecs, meaning that you
could do

  git pull $repo A:B

which would simultaneously fetch the remote branch A into the local
branch B and merge B into HEAD.  This got especially confusing if B
was checked out.  New users variously mistook pull for fetch or read
that command as "merge the remote A into my B", neither of which is
correct.

Since the above usage should be very rare and can be done with
separate calls to fetch and merge, we just disallow full fetchspecs in
git-pull.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---

This actually came up on IRC *twice* this week.


 git-pull.sh     |   19 +++++++++++++++++++
 t/t5520-pull.sh |   12 ------------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/git-pull.sh b/git-pull.sh
index fc78592..8f06491 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -131,6 +131,25 @@ error_on_no_merge_candidates () {
 	exit 1
 }
 
+check_full_fetchspec () {
+	shift	# discard remote argument, if any
+	for arg in "$@"
+	do
+		case "$arg" in
+		*:*)
+			echo "$arg"
+			return
+			;;
+		esac
+	done
+}
+
+full_fetchspec=$(check_full_fetchspec "$@")
+if test -n "$full_fetchspec"
+then
+	die "full fetchspec '$full_fetchspec' not allowed"
+fi
+
 test true = "$rebase" && {
 	if ! git rev-parse -q --verify HEAD >/dev/null
 	then
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index dd2ee84..a566a99 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -29,18 +29,6 @@ test_expect_success 'checking the results' '
 	diff file cloned/file
 '
 
-test_expect_success 'pulling into void using master:master' '
-	mkdir cloned-uho &&
-	(
-		cd cloned-uho &&
-		git init &&
-		git pull .. master:master
-	) &&
-	test -f file &&
-	test -f cloned-uho/file &&
-	test_cmp file cloned-uho/file
-'
-
 test_expect_success 'test . as a remote' '
 
 	git branch copy master &&
-- 
1.6.5.1.144.g40216

^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2009-12-29 16:59 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-20 18:23 [PATCH] pull: refuse complete src:dst fetchspec arguments Thomas Rast
2009-10-20 18:37 ` [RFC! PATCH] " Thomas Rast
2009-10-20 19:29 ` [PATCH] " Wesley J. Landaker
2009-10-20 20:30 ` Sean Estabrooks
2009-10-20 21:11   ` Junio C Hamano
2009-10-21  0:15   ` Daniel Barkalow
2009-10-21  0:29     ` Sean Estabrooks
2009-10-21  0:55       ` Daniel Barkalow
2009-10-21  1:35         ` Sean Estabrooks
2009-10-21  3:15         ` Björn Steinbrink
2009-10-21  4:32           ` Daniel Barkalow
2009-10-21  8:05           ` Thomas Rast
2009-10-23  2:54             ` Jeff King
2009-10-23  3:43               ` Daniel Barkalow
2009-10-24  0:49                 ` Jeff King
2009-10-24  1:22                   ` Junio C Hamano
2009-10-21  8:06   ` Thomas Rast
2009-11-15 12:24 ` Thomas Rast
2009-11-15 20:22   ` Junio C Hamano
2009-12-29 11:05 ` Nanako Shiraishi
2009-12-29 16:58   ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).