{"thread":{"id":"965","subject":"Re: git merging","startedAt":"2005-06-17T18:50:39Z","lastAt":"2005-06-21T15:53:00Z","messageCount":16,"participants":["Linus Torvalds","Jens Axboe","Jeff Garzik","Matthias Urlichs","Daniel Barkalow"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"5003","messageId":"Pine.LNX.4.58.0506171142500.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"20050617183914.GX6957@suse.de","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-17T18:50:39Z","receivedAt":"2005-06-17T18:50:39Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n[ Git mailing list cc'd, since this is a general question that maybe \n  others have wondered about ]\n\nOn Fri, 17 Jun 2005, Jens Axboe wrote:\n> \n> btw (and forgive me for just asking you), what is the canonical way to\n> kill a branch in case you want to redo it? right now I have a block tree\n> with a bunch of brances, and I would like to redo one of the branches\n> because I forgot to add the signed-off-by entries in there.\n\nYou can just simply remove the .git/refs/heads/branch-name file (obviously \nafter having made sure that \".git/HEAD\" points to something else), and \nthen you can run \"git prune\", which will remove all objects that aren't \nreferenced (directly or indirectly) by anything in \".git/refs/**\".\n\nBe very very careful, though. \"git prune\" is a dangerous script, since it\nwill remove objects from the object store. If you had something that you\ndon't have a proper reference for, or if you give \"git prune\" a list of\nreferences manually and it's not complete, \"git prune\" will happily remove\nobjects that you didn't mean for it to remove.\n\nThe \"git prune\" script is really trivial, you can see for yourself what \n\"git-prune-script\" does.\n\nNOTE! It's entirely possible to not actually delete the old branch, but \njust rename it, and use it as a reference while you build up the new \nbranch with the same contents (but maybe different commit log messages, or \nmaybe just re-ordering the commits in the new version). To rename a \nbranch, just rename the \".git/refs/heads/<branch-name>\" file to something \nelse.\n\nSo you may decide to remove (and prune) the old branch only after you've \nre-created a new version of it, for example. That way you can use git \nitself to extract the contents of the branch you want to re-do, which is \noften easier.\n\nBtw, if you have a recent version of \"gitk\" instealled, you can do\n\n\tgitk $(ls .git/revs/heads)\n\nand you'll get a full graphical view of _all_ your branches, which can be \nvery instructive.\n\n\t\tLinus\n"},{"id":"5004","messageId":"20050617191627.GZ6957@suse.de","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506171142500.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jens Axboe","fromEmail":"axboe@suse.de","sentAt":"2005-06-17T19:16:28Z","receivedAt":"2005-06-17T19:16:28Z","isPatch":false,"sender":{"key":"axboe@kernel.dk","avatar":null},"body":"On Fri, Jun 17 2005, Linus Torvalds wrote:\n> \n> [ Git mailing list cc'd, since this is a general question that maybe \n>   others have wondered about ]\n> \n> On Fri, 17 Jun 2005, Jens Axboe wrote:\n> > \n> > btw (and forgive me for just asking you), what is the canonical way to\n> > kill a branch in case you want to redo it? right now I have a block tree\n> > with a bunch of brances, and I would like to redo one of the branches\n> > because I forgot to add the signed-off-by entries in there.\n> \n> You can just simply remove the .git/refs/heads/branch-name file (obviously \n> after having made sure that \".git/HEAD\" points to something else), and \n> then you can run \"git prune\", which will remove all objects that aren't \n> referenced (directly or indirectly) by anything in \".git/refs/**\".\n> \n> Be very very careful, though. \"git prune\" is a dangerous script, since it\n> will remove objects from the object store. If you had something that you\n> don't have a proper reference for, or if you give \"git prune\" a list of\n> references manually and it's not complete, \"git prune\" will happily remove\n> objects that you didn't mean for it to remove.\n> \n> The \"git prune\" script is really trivial, you can see for yourself what \n> \"git-prune-script\" does.\n\nThat worked! Thanks.\n\n> NOTE! It's entirely possible to not actually delete the old branch, but \n> just rename it, and use it as a reference while you build up the new \n> branch with the same contents (but maybe different commit log messages, or \n> maybe just re-ordering the commits in the new version). To rename a \n> branch, just rename the \".git/refs/heads/<branch-name>\" file to something \n> else.\n> \n> So you may decide to remove (and prune) the old branch only after you've \n> re-created a new version of it, for example. That way you can use git \n> itself to extract the contents of the branch you want to re-do, which is \n> often easier.\n\nYeah that's very handy. I love the way the branches work, with just the\nsha in the file name. So easy to manipulate.\n\n-- \nJens Axboe\n\n"},{"id":"5007","messageId":"42B357D7.6030302@pobox.com","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506171142500.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jeff Garzik","fromEmail":"jgarzik@pobox.com","sentAt":"2005-06-17T23:08:07Z","receivedAt":"2005-06-17T23:08:07Z","isPatch":false,"sender":{"key":"jgarzik@pobox.com","avatar":null},"body":"Linus Torvalds wrote:\n> The \"git prune\" script is really trivial, you can see for yourself what \n> \"git-prune-script\" does.\n\n\nI've been too lazy to report this, but...\n\nlast time I tried it, git-prune-script ate valid objects, for my \nmulti-branch trees.  This was 100% reproducible.  Luckily, the objects \nit ate were all in the main branch, so an rsync-without-delete from \nlinux-2.6.git/objects would restore the missing data.\n\nThis was verified by repeated runs of\n\tgit-fsck-cache\t\t# OK\n\tgit-prune-script\n\tgit-fsck-cache\t\t# spits out tons of errors\n\trsync ...\t\t# restore deleted objects\n\tgit-fsck-cache\t\t# OK\n\nI use hardlinks on the local disk, between several multi-branch repos, \nif that matters.\n\n\tJeff\n\n\n"},{"id":"5008","messageId":"Pine.LNX.4.58.0506171629320.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"42B357D7.6030302@pobox.com","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-17T23:31:45Z","receivedAt":"2005-06-17T23:31:45Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 17 Jun 2005, Jeff Garzik wrote:\n> \n> I've been too lazy to report this, but...\n> \n> last time I tried it, git-prune-script ate valid objects, for my \n> multi-branch trees.  This was 100% reproducible.\n\nOk. The most likely reason is that your main branch is not a symlink to \n\".git/refs/***\" at all, but just a regular \".git/HEAD\" file.\n\n\"git prune\" will by default _only_ look for references in .git/refs/, and\nif you have any references anywhere else, you need to do all your refs by\nhand.\n\nThere might be a bug in the ref-lookup code, of course, but it's more \nlikely that your refs just aren't where fsck expects them.\n\n\t\tLinus\n"},{"id":"5009","messageId":"42B36207.3020209@pobox.com","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506171629320.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jeff Garzik","fromEmail":"jgarzik@pobox.com","sentAt":"2005-06-17T23:51:35Z","receivedAt":"2005-06-17T23:51:35Z","isPatch":false,"sender":{"key":"jgarzik@pobox.com","avatar":null},"body":"Linus Torvalds wrote:\n> Ok. The most likely reason is that your main branch is not a symlink to \n> \".git/refs/***\" at all, but just a regular \".git/HEAD\" file.\n\nThis is definitely not the case; my .git/HEAD is _always_ a symlink.\n\nMy git-switch-tree script, attached, demonstrates how .git/HEAD symlink \nis retargetted to the specified branch.  My workflow depends on \n.git/HEAD being a symlink.\n\nI'll see if I can reproduce with the latest git.\n\n\tJeff\n\n\n\n\n#!/bin/sh\n\nif [ \"x$1\" != \"x\" ]\nthen\n\tif [ ! -f .git/refs/heads/$1 ]\n\tthen\n\t\techo Branch $1 not found.\n\t\texit 1\n\tfi\n\n\t( cd .git && rm -f HEAD && ln -s refs/heads/$1 HEAD )\nfi\n\ngit-read-tree -m HEAD && git-checkout-cache -q -f -u -a\n\n"},{"id":"5010","messageId":"Pine.LNX.4.58.0506171700200.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"42B36207.3020209@pobox.com","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-18T00:13:23Z","receivedAt":"2005-06-18T00:13:23Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 17 Jun 2005, Jeff Garzik wrote:\n> \n> This is definitely not the case; my .git/HEAD is _always_ a symlink.\n\nOk. Are you sure that you gave the same arguments (or rather, lack of\narguments) to both fsck and \"git prune\"? The thing is, they are both\nreally the same thing, so I'm pretty surprised. If git prune says \nsomething is unreachable, then git-fsck-cache shouldn't complain about it \nbeing gone, because one just depends on the other..\n\n> My git-switch-tree script, attached, demonstrates how .git/HEAD symlink \n> is retargetted to the specified branch.  My workflow depends on \n> .git/HEAD being a symlink.\n\nBtw, you can now do the same thing more safely and guarantee that it \ndoesn't overwrite any old information by using\n\n\tgit-read-tree -m -u <old-head> <new-head>\n\nwhich basically switches from \"old\" to \"new\", and verifies that all the \nold index contents were valid in \"old-head\", and that any file that was \ndirty is not different in \"new-head\".\n\nYour old script would silently overwrite any dirty state in your working\ndirectory, and drop anything that you had done a git-update-cache on but\nnot committed.\n\nNow, you may have _depended_ on that behaviour as a way to just reset the \ntree to a known state, but if so, I'd suggest using\n\n\tgit-read-tree --reset HEAD && git-checkout-cache -q -f -u -a\n\nfor that instead (which will also throw away any partial merges).\n\nSo for the \"switch\" case, you might make it be something like\n\n\tif [ ! -f .git/refs/heads/$1 ]\n\tthen\n\t\techo \"Branch '$1' not found\"\n\t\texit 1;\n\tfi\n\tgit-read-tree -m -u HEAD \"heads/$1\" && ln -sf refs/heads/$1 .git/HEAD\n\nwhich should do the right thing.\n\nTotally untested, of course ;)\n\n[ But the two-tree read-tree is definitely not untested: this is how we \n  do a safe \"fast forward\" in the git-resolve-script, which really ends up \n  being the exact same thing: it \"switches\" from one head to another ].\n\n\t\tLinus\n"},{"id":"5075","messageId":"20050620123053.GI15021@suse.de","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506171700200.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jens Axboe","fromEmail":"axboe@suse.de","sentAt":"2005-06-20T12:30:53Z","receivedAt":"2005-06-20T12:30:53Z","isPatch":false,"sender":{"key":"axboe@kernel.dk","avatar":null},"body":"On Fri, Jun 17 2005, Linus Torvalds wrote:\n> \n> \n> On Fri, 17 Jun 2005, Jeff Garzik wrote:\n> > \n> > This is definitely not the case; my .git/HEAD is _always_ a symlink.\n> \n> Ok. Are you sure that you gave the same arguments (or rather, lack of\n> arguments) to both fsck and \"git prune\"? The thing is, they are both\n> really the same thing, so I'm pretty surprised. If git prune says \n> something is unreachable, then git-fsck-cache shouldn't complain about it \n> being gone, because one just depends on the other..\n\nSeeing something weird here as well, my setup is similar to Jeffs in\nthat I have branches in refs/heads/* and HEAD a symlink to the active\none.\n\nI committed a bad patch, so wanting to reverse that change I did an\n\n# echo sha_of_previous_commit > .git/HEAD\n# git-read-tree -m HEAD && git-checkout-cache -q -f -u -a\n\nwhich, if I understand correctly, should put me back where I was before.\nSo continuing commits, checking the tree now gives me:\n\naxboe@nelson:[.]l/git/linux-2.6-block.git $ git prune\nerror: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\nbad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\naxboe@nelson:[.]l/git/linux-2.6-block.git $ git-fsck-cache \nerror: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\nbad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\nbad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\n\nRunning git prune again gives me the same output. What is wrong?\n\n-- \nJens Axboe\n\n"},{"id":"5077","messageId":"pan.2005.06.20.13.48.30.2680@smurf.noris.de","threadId":"965","inReplyTo":"20050620123053.GI15021@suse.de","subject":"Re: git merging","fromName":"Matthias Urlichs","fromEmail":"smurf@smurf.noris.de","sentAt":"2005-06-20T13:48:31Z","receivedAt":"2005-06-20T13:48:31Z","isPatch":false,"sender":{"key":"matthias@urlichs.de","avatar":"https://gravatar.com/avatar/2708905af227313eba6f2b2ae0f7d0259b5ac5d71baef58fe5a13c699ce0bbf0?d=mp&s=160"},"body":"Hi, Jens Axboe wrote:\n\n> error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n> bad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\n\nWhat does \"git-cat-file -t\" say on these two -- are they botth vald commit\nobjects?\n\n-- \nMatthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de\nDisclaimer: The quote was selected randomly. Really. | http://smurf.noris.de\n - -\nHe that is giddy thinks the world turns round.\n\t\t-- William Shakespeare, \"The Taming of the Shrew\"\n\n\n"},{"id":"5078","messageId":"20050620141303.GN15021@suse.de","threadId":"965","inReplyTo":"pan.2005.06.20.13.48.30.2680@smurf.noris.de","subject":"Re: git merging","fromName":"Jens Axboe","fromEmail":"axboe@suse.de","sentAt":"2005-06-20T14:13:04Z","receivedAt":"2005-06-20T14:13:04Z","isPatch":false,"sender":{"key":"axboe@kernel.dk","avatar":null},"body":"On Mon, Jun 20 2005, Matthias Urlichs wrote:\n> Hi, Jens Axboe wrote:\n> \n> > error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n> > bad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\n> \n> What does \"git-cat-file -t\" say on these two -- are they botth vald commit\n> objects?\n\naxboe@nelson:[.]l/git/linux-2.6-block.git $ git-cat-file -t c39ae07f393806ccf406ef966e9a15afc43cc36a\nerror: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\nfatal: git-cat-file c39ae07f393806ccf406ef966e9a15afc43cc36a: bad file\naxboe@nelson:[.]l/git/linux-2.6-block.git $ git-cat-file -t 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\ntag\n\n-- \nJens Axboe\n\n"},{"id":"5082","messageId":"Pine.LNX.4.58.0506200844420.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"20050620123053.GI15021@suse.de","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-20T15:58:24Z","receivedAt":"2005-06-20T15:58:24Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n[ Daniel put on the To: list to see if he can confirm or deny my theory ]\n\nOn Mon, 20 Jun 2005, Jens Axboe wrote:\n> \n> axboe@nelson:[.]l/git/linux-2.6-block.git $ git prune\n> error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n\nThat's the 2.6.11 \"tree\" object.\n\n> bad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\n> axboe@nelson:[.]l/git/linux-2.6-block.git $ git-fsck-cache \n> error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n> bad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\n> bad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\n> \n> Running git prune again gives me the same output. What is wrong?\n\nVery interesting. You have my \"v2.6.11-tree\" tag file pointing the 2.6.11\ntree object, but you seem to not have that 2.6.11 tree itself.\n\nActually, judging from the fact that you got this error _during_ the\nprune, maybe you never had it in that repository in the first place?\n\nIn particular, if you don't use \"rsync\", but instead use one of the\n\"optimized pull\" things to create a repository (ie git-http-pull or\ngit-ssh-pull), I think your newly pulled tree will always miss anything\nthat isn't a head. And the 2.6.11 tree is a special case: it's a pure\n\"tree\" object without any commit at all pointing to it, just a single tag\nthat points directly to the tree.\n\nAnyway, the fact that you're missing the original 2.6.11 tree doesn't\nreally matter, so it's not a huge deal per se. You can re-populate it with\nan \"rsync -avz --ignore-existing\", but clearly something seems to be\nwrong.\n\nDaniel: I think git-ssh-pull has problems with any refs that aren't\ncommits. I also noticed earlier that I can't use git-ssh-push -w to write\na tag - it is apparently unhappy because it would write a \"tag\" object,\nand it only wants to write references to \"commit\" objects. The same thing\nmight be true about the special \"tag to a tree\" object?\n\nJeff, do you remember (did you check?) if your prune problems might also\nhave been about the tag to a tree?\n\n\t\tLinus\n"},{"id":"5083","messageId":"Pine.LNX.4.21.0506201156360.30848-100000@iabervon.org","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506200844420.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2005-06-20T16:06:01Z","receivedAt":"2005-06-20T16:06:01Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Mon, 20 Jun 2005, Linus Torvalds wrote:\n\n> Daniel: I think git-ssh-pull has problems with any refs that aren't\n> commits. I also noticed earlier that I can't use git-ssh-push -w to write\n> a tag - it is apparently unhappy because it would write a \"tag\" object,\n> and it only wants to write references to \"commit\" objects. The same thing\n> might be true about the special \"tag to a tree\" object?\n\nYou're correct; it's actually that pull.c has never gotten extended to\nlook at the object you specify, determine what it is, and then behave\nappropriately. Basically, it needs a \"process_unknown()\" which does the\nappropriate thing, and pull() needs to call that instead of\nprocess_commit(). It should also get a \"process_tag()\" which handles tags\n(calling process_unknown() on their objects). I should be able to do it\nTuesday evening or Wednesday night, if nobody else gets it before then.\n\n\t-Daniel\n*This .sig left intentionally blank*\n\n"},{"id":"5089","messageId":"pan.2005.06.20.19.21.26.676320@smurf.noris.de","threadId":"965","inReplyTo":"Pine.LNX.4.21.0506201156360.30848-100000@iabervon.org","subject":"Re: git merging","fromName":"Matthias Urlichs","fromEmail":"smurf@smurf.noris.de","sentAt":"2005-06-20T19:21:29Z","receivedAt":"2005-06-20T19:21:29Z","isPatch":false,"sender":{"key":"matthias@urlichs.de","avatar":"https://gravatar.com/avatar/2708905af227313eba6f2b2ae0f7d0259b5ac5d71baef58fe5a13c699ce0bbf0?d=mp&s=160"},"body":"Hi, Daniel Barkalow wrote:\n\n> Basically, it needs a \"process_unknown()\" which does the\n> appropriate thing, and pull() needs to call that instead of\n> process_commit().\n\nIt also needs a request queue.\n\nThe beauty of rsync() is that it doesn't depend on a low-latency wire to\nwork efficiently. Right now, pull() needs one round trip per object, and\nthat's way too much.\n\nI hope to have some free time for that this week, but no promises. :-/\n\n-- \nMatthias Urlichs   |   {M:U} IT Design @ m-u-it.de   |  smurf@smurf.noris.de\nDisclaimer: The quote was selected randomly. Really. | http://smurf.noris.de\n - -\nCreativity varies inversely with the number of cooks involved with the\nbroth.\n\t\t\t\t\t-- Bernice Fitz-Gibbon\n\n\n"},{"id":"5090","messageId":"20050620203821.GC7712@suse.de","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506200844420.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jens Axboe","fromEmail":"axboe@suse.de","sentAt":"2005-06-20T20:38:22Z","receivedAt":"2005-06-20T20:38:22Z","isPatch":false,"sender":{"key":"axboe@kernel.dk","avatar":null},"body":"On Mon, Jun 20 2005, Linus Torvalds wrote:\n> \n> [ Daniel put on the To: list to see if he can confirm or deny my theory ]\n> \n> On Mon, 20 Jun 2005, Jens Axboe wrote:\n> > \n> > axboe@nelson:[.]l/git/linux-2.6-block.git $ git prune\n> > error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n> \n> That's the 2.6.11 \"tree\" object.\n> \n> > bad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\n> > axboe@nelson:[.]l/git/linux-2.6-block.git $ git-fsck-cache \n> > error: cannot map sha1 file c39ae07f393806ccf406ef966e9a15afc43cc36a\n> > bad object in tag 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c\n> > bad sha1 entry '5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c'\n> > \n> > Running git prune again gives me the same output. What is wrong?\n> \n> Very interesting. You have my \"v2.6.11-tree\" tag file pointing the 2.6.11\n> tree object, but you seem to not have that 2.6.11 tree itself.\n> \n> Actually, judging from the fact that you got this error _during_ the\n> prune, maybe you never had it in that repository in the first place?\n\nI can't tell exactly, but I'm fairly sure this is a new error. I have\ntwo git trees locally - one which is just an rsync of your kernel.org\ntree, the other which is based off that (with a clone of the fs dir) and\nhas multiple branches for developments. The main tree did not have this\nproblem, while the development tree does/did.\n\n> In particular, if you don't use \"rsync\", but instead use one of the\n> \"optimized pull\" things to create a repository (ie git-http-pull or\n> git-ssh-pull), I think your newly pulled tree will always miss anything\n> that isn't a head. And the 2.6.11 tree is a special case: it's a pure\n> \"tree\" object without any commit at all pointing to it, just a single tag\n> that points directly to the tree.\n> \n> Anyway, the fact that you're missing the original 2.6.11 tree doesn't\n> really matter, so it's not a huge deal per se. You can re-populate it with\n> an \"rsync -avz --ignore-existing\", but clearly something seems to be\n> wrong.\n\nI pulled with rsync manually from kernel.org, and that did fix things up\nfor me. The main tree is rsync'ed, but the development tree gets the\nchanges with /opt/kernel/git/linux-2.6/.git/ as the url given to\ngit-pull-script.\n\n-- \nJens Axboe\n\n"},{"id":"5092","messageId":"Pine.LNX.4.58.0506201410050.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"20050620203821.GC7712@suse.de","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-20T21:15:58Z","receivedAt":"2005-06-20T21:15:58Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Mon, 20 Jun 2005, Jens Axboe wrote:\n> \n> I pulled with rsync manually from kernel.org, and that did fix things up\n> for me. The main tree is rsync'ed, but the development tree gets the\n> changes with /opt/kernel/git/linux-2.6/.git/ as the url given to\n> git-pull-script.\n\nOk, that explains it. Since you're using a regular local filename, the\npull will be using \"git-local-pull\", which will only fetch the objects\ndirectly needed. And doesn't understand the tag-to-tree thing, so doesn't \nfetch the tree (or possibly you just copied the tags by hand totally \noutside of the regular pull?)\n\n\t\tLinus\n"},{"id":"5099","messageId":"20050621145919.GB12271@suse.de","threadId":"965","inReplyTo":"Pine.LNX.4.58.0506201410050.2268@ppc970.osdl.org","subject":"Re: git merging","fromName":"Jens Axboe","fromEmail":"axboe@suse.de","sentAt":"2005-06-21T14:59:20Z","receivedAt":"2005-06-21T14:59:20Z","isPatch":false,"sender":{"key":"axboe@kernel.dk","avatar":null},"body":"On Mon, Jun 20 2005, Linus Torvalds wrote:\n> \n> \n> On Mon, 20 Jun 2005, Jens Axboe wrote:\n> > \n> > I pulled with rsync manually from kernel.org, and that did fix things up\n> > for me. The main tree is rsync'ed, but the development tree gets the\n> > changes with /opt/kernel/git/linux-2.6/.git/ as the url given to\n> > git-pull-script.\n> \n> Ok, that explains it. Since you're using a regular local filename, the\n> pull will be using \"git-local-pull\", which will only fetch the objects\n> directly needed. And doesn't understand the tag-to-tree thing, so doesn't \n> fetch the tree (or possibly you just copied the tags by hand totally \n> outside of the regular pull?)\n\nIsn't that a little 'end user' confusing from a usability point of view,\nthat it behaves differently depending on which pull script it ends up\nusing in the end?\n\nI guess I can just always use rsync even for local trees. And use it\ndirectly, so I always have everything :)\n\n-- \nJens Axboe\n\n"},{"id":"5102","messageId":"Pine.LNX.4.58.0506210851260.2268@ppc970.osdl.org","threadId":"965","inReplyTo":"20050621145919.GB12271@suse.de","subject":"Re: git merging","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-06-21T15:53:00Z","receivedAt":"2005-06-21T15:53:00Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Tue, 21 Jun 2005, Jens Axboe wrote:\n> \n> Isn't that a little 'end user' confusing from a usability point of view,\n> that it behaves differently depending on which pull script it ends up\n> using in the end?\n\nYes, I'm not claiming it's good, I'm just claiming it explains what you \nsee ;)\n\nSo it's a bug, but I'm hoping somebody else will fix it. I've not actually\nworked on that \"intelligent pull\" functionality at all (aside from making\nthe ssh-push thing work for my limited use).\n\n\t\t\tLinus\n"}]}