Thread (11 messages) flat view 11 messages, 4 authors, 2016-06-15

Re: [PATCH v2] Fix fetch/pull when run without --update-head-ok

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:45:29

On Tue, 14 Oct 2008, Johannes Schindelin wrote:
Hi,

On Mon, 13 Oct 2008, Daniel Barkalow wrote:
quoted
On Mon, 13 Oct 2008, Johannes Schindelin wrote:
quoted
I actually understand now why the tests started failing: the change from 
resolve_ref() to get_branch() as requested by Daniel are at fault: 
get_branch() does not check if the branch has an initial commit.

I am actually regretting making this change.  Daniel, do you agree 
that it might be better to change back to resolve_ref(), so that the 
initial complaint (IIRC Han-Wen git pull'ed into a freshly initialized 
repository with that utterly bogus "git pull origin master:master" 
line) is not re-raised?
Is it, in fact, okay to fetch into the current branch if it's "yet to be 
born"? I feel like it shouldn't be, since you'll get exactly the same 
problem that you would if the branch already existed: the index reflects 
the previous state (in this case, it's empty), so git will show that 
you've staged removing all of the files, right? So this would make the 
check for --update-head-ok more strict than before, but I think the 
behavior change is correct.
I think 
http://thread.gmane.org/gmane.comp.version-control.git/31351/focus=31544 
is the best link to see what Han-Wen said.  Granted, it was a 
misunderstanding on his part, but there have been quite a few people with 
the same misunderstanding.

So what they did was

	$ mkdir just-one-branch
	$ cd just-one-branch
	$ git init
	$ git remote add origin <url>
	$ git pull origin master:master

And this _will_ work correctly.  Except when using get_branch(NULL) 
instead of the validating resolve_ref().
"git pull origin master:master" invokes "git fetch" with --update-head-ok, 
so it doesn't matter for this case what "git fetch" does without 
--update-head-ok.

The check would block:

$ git fetch origin master:master

but this also would fail to update the working directory and would leave 
the index as if you're removing everything.

	-Daniel
*This .sig left intentionally blank*
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help