From: Junio C Hamano Date: Fri, 16 Dec 2005 17:40:45 GMT Subject: Re: bad git pull Message-ID: <7v3bktj5ya.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <68948ca0512160739g12a3e25en256bae8c354c3a45@mail.gmail.com> Don Zickus writes: >> While I am sympathetic, this "Oops, I said pull when I meant >> fetch" sounds remotely similar to "oops, I said 'rm -r' when I >> meant to say 'ls -r'". Is it that the tool is too fragile? > > Sorry, wrong choice of words. Didn't mean to imply anything negative. > Though, I am still learning the tool and its features, I do appreciate > your feedback and your last email was correct in understanding the > mess I created. I'll go read up on the differences between 'fetch' > and 'pull'. I too was a bit too defensive, and I agree the tool is prone to easy errors; the worst part is that there is no "rm -i" equivalent to be extra careful [*1*]. On the other hand, we have "git reset" to recover from, so it is not as bad as a mistake with "rm" ;-). If for example there were a way to say "this `origin' shortcut is to be pulled into `master' branch and nothing else", we could have caught the "git pull" you had trouble with. There was a discussion on the list in the past to extend remotes/ files to allow such restriction of the patchflow to be expressed, but back then I felt the kind of restriction the proposal could express was too limiting, and the discussion was a bit premature because we did not have recommended patterns yet. We might want to revive the discussion post 1.0. Taking the example of the topic-branch workflow by Tony, the "patch flow" language needs to be able to express something at least this: - topic branches -- branched from 'origin' somewhere in the past; commits accumulated but usually nothing is merged into them. - 'test' -- branched from 'origin' somewhere in the past; used solely to merge topic branches into it and no commits are made into it directly; branches that are regularly merged into it are: - topic branches - 'origin' - 'release' - 'release' -- branched from 'origin' somewhere in the past; trivial/obviously correct commits are made into it directly; proven to be good topic branches are merged into it for consumption by others; branches that are regularly merged into it are: - topic branches - 'origin' - never 'test' [Footnote] *1* IMHO "rm -i" is not that safe, though. If one overuses it, it trains one's fingers to say "y" without much thinking.