From: Linus Torvalds Date: Mon, 06 Jun 2005 14:47:52 GMT Subject: Re: Last mile for 1.0 Message-ID: In-Reply-To: <7vacm4ufnl.fsf@assigned-by-dhcp.cox.net> [ git list added back in, since I migth as well explain the thinking here ] On Mon, 6 Jun 2005, Junio C Hamano wrote: > > I've sent you a reply in another thread, but I really think you > need to make this "new merge world order" a bit more explicit. > My understanding of your (earlier) wish was that you wanted the > merge not to touch and look at any work tree material, but it > appears to me that this round you actually expect the work tree > be populated and more-or-less match the first head being merged. Actually, no. I expect the old _index_ to be at least not _more_ populated than the trees I merge. That's not a working tree issue, that's a "we don't want to drop information from the index". And yes, if you use "-u", it will populate the working tree too, but that's really totally unimportant from the algorithm itself. But you can very much do everything in-index as before, if you want to. A pure index merge would be done usually in a new temporary index file, something like rm -f .git/tmp_index GIT_INDEX_FILE=.git/tmp_index git-read-tree -m and the new changes don't change that. HOWEVER, it's all set up to be very clever indeed. My immediate goal is to make the current git-resolve-script be more easily usable, and that implies that it has to work in the current working directory and resolve conflicts there. I still think that the _long-term_ plan is to make sure that we don't do that, and the new thing actually supports that too. For example, notice how I lifted all the "checkout" code from the checkout-cache thing? Including very much the code that supports "--prefix"? I didn't add the command line, but imagine just adding that, which updates "state.base_dir", and doing mkdir -p MERGE_DIR/.git cp .git/index MERGE_DIR/.git/index GIT_INDEX_FILE=MERGE_DIR/.git/index git-read-tree -u --prefix=MERGE_DIR/ and voila, you're basically now 75% of the way to where I wanted the thing to be in a separate directory. So I've given up on the separate directory for 1.0 - because it's clearly not going to happen - but I've not given up on the basic idea. Linus