From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.176.0/21 X-Spam-Status: No, score=-3.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MSGID_FROM_MTA_HEADER,RP_MATCHES_RCVD shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 From: Carl Worth Subject: Re: multi-project repos (was Re: Cleaning up git user-interface warts) Date: Thu, 16 Nov 2006 17:08:05 -0800 Message-ID: <87r6w2ribu.wl%cworth@cworth.org> References: <87k61yt1x2.wl%cworth@cworth.org> <87bqn9u43s.wl%cworth@cworth.org> <7vbqn9y6w6.fsf@assigned-by-dhcp.cox.net> <7v3b8ltq7r.fsf@assigned-by-dhcp.cox.net> <455BBCE9.4050503@xs4all.nl> <455C412D.1030408@xs4all.nl> <455C94FA.3050903@xs4all.nl> <455CA2A8.5010700@xs4all.nl> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/signed; boundary="pgp-sign-Multipart_Thu_Nov_16_17:08:05_2006-1"; micalg=pgp-sha1; protocol="application/pgp-signature" Content-Transfer-Encoding: 7bit NNTP-Posting-Date: Fri, 17 Nov 2006 01:08:39 +0000 (UTC) Cc: Johannes Schindelin , Han-Wen Nienhuys , Junio C Hamano , git@vger.kernel.org Return-path: Envelope-to: gcvg-git@gmane.org In-Reply-To: User-Agent: Wanderlust/2.14.0 (Africa) Emacs/21.4 Mule/5.0 (SAKAKI) Precedence: bulk X-Mailing-List: git@vger.kernel.org Archived-At: Received: from vger.kernel.org ([209.132.176.167]) by ciao.gmane.org with esmtp (Exim 4.43) id 1GksDY-0005Tg-TS for gcvg-git@gmane.org; Fri, 17 Nov 2006 02:08:33 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1424849AbWKQBI3 (ORCPT ); Thu, 16 Nov 2006 20:08:29 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1424850AbWKQBI3 (ORCPT ); Thu, 16 Nov 2006 20:08:29 -0500 Received: from theworths.org ([217.160.253.102]:14531 "EHLO theworths.org") by vger.kernel.org with ESMTP id S1424849AbWKQBI2 (ORCPT ); Thu, 16 Nov 2006 20:08:28 -0500 Received: (qmail 4459 invoked from network); 16 Nov 2006 20:08:22 -0500 Received: from localhost (HELO raht.cworth.org) (127.0.0.1) by localhost with SMTP; 16 Nov 2006 20:08:22 -0500 To: Linus Torvalds Sender: git-owner@vger.kernel.org --pgp-sign-Multipart_Thu_Nov_16_17:08:05_2006-1 Content-Type: text/plain; charset=US-ASCII On Thu, 16 Nov 2006 16:49:29 -0800 (PST), Linus Torvalds wrote: > So in many ways, HEAD, FETCH_HEAD, MERGE_HEAD and ORIG_HEAD are more > fundamental than any long-term branch has ever been, and maybe they should > be taught first as such. Older in git's history as it developed is not a good match for more fundamental in the concepts that git makes available today. > > > Again, why didn't you use FETCH_HEAD? > > > > Because I am a Jar-HEAD? > > Well, we clearly should document them better. Anybody? I for one am totally unsatisfied with this approach. Here's an operations I'd like to be able to do: Given a (URL, branch) pair I'd like I'd like to be able to investigate that code, (say with the fancy new "read-only branch" concept we've been talking about). What are my options for this operation? What might a new user's reaction to them be? a) git fetch URL branch git checkout FETCH_HEAD This is really ugly. A name like "FETCH_HEAD" is something a user should really never have to type. It's hideously hard to type and has no natural discoverability. Yuck, yuck, yuck. b) vi .git/remotes/something git fetch something git checkout branch Also yuck. I hope it's obvious that having to edit a configuration for this simple operation is a non-starter. c) git fetch URL branch:local-branch git checkout local-branch We're getting close to the desired functionality now, but the UI makes users cringe? "What's that : for?" Why do I need another name?" etc. Linus, you yourself said this is a form that users should generally avoid. d) git fetch URL branch:branch git checkout branch One step closer. But there's still that goofy extra ':' and a doubled name in the first command. "Why is that there? Git sure is weird...". What I think this operation should look like is: git fetch URL branch git checkout branch And the fetch should just complain if there's a name clash. Or better, the fetch should tuck the fetched branch into its own URL-specific namespace and then the checkout command can kindly prompt if there is any ambiguity: Which "branch" do you want? local/branch remote-url/branch or whatever. See? That's what reasonable UI should look like. Please feel free to keep using vestiges like FETCH_HEAD as much as you like, but please don't recommend documenting them better as a solution for UI warts in git. (If you would only look at these warts closer, you'd see they have some lovely locks of hair on them.) -Carl --pgp-sign-Multipart_Thu_Nov_16_17:08:05_2006-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFXQt16JDdNq8qSWgRAjDyAKCNKGkGuNXao4putztMxv3Y74BrJgCgjLxv LbWeV/v0bq7c/GAVlUToaUQ= =65rH -----END PGP SIGNATURE-----