{"thread":{"id":"496","subject":"How do I...","startedAt":"2005-05-06T09:49:39Z","lastAt":"2005-05-07T08:58:35Z","messageCount":24,"participants":["Frank Sorenson","Thomas Glanzmann","Dave Kleikamp","Linus Torvalds","Junio C Hamano","David Woodhouse","Daniel Barkalow","Thomas Kolejka","Benjamin Herrenschmidt"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"2657","messageId":"427B3DB3.4000507@tuxrocks.com","threadId":"496","inReplyTo":null,"subject":"How do I...","fromName":"Frank Sorenson","fromEmail":"frank@tuxrocks.com","sentAt":"2005-05-06T09:49:39Z","receivedAt":"2005-05-06T09:49:39Z","isPatch":false,"sender":{"key":"frank@tuxrocks.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nOkay, I've got some \"How can I?\" questions.  I hope I'm not the only one\nstill working to \"git it\".\n\nHow can I git a list of commits that have modified a particular file?\nFor example, I'd like to do something like this:\n# git-file-revs Makefile\nf7eb55878f11575281add2a5726e483aed5e45bb\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n...\n\nHow can I output a list of the filename(s) modified by a particular\ncommit? (for example)\n# git-commit-info files 6741f3a7f9922391cd02b3ca1329e669497dc22f\nMakefile\nfile1\narch/file2\n\nCan I use cg-log to output just the information about a particular\ncommit?  (I don't need all the commits, just the one I'm interested in).\n\nAfter doing a cg-update, can I cg-log just the changes since the last\nupdate?  Alternatively, how can I tell cg-log I'm caught up, and don't\nneed anything historical?\n\nCan I do these with git/cogito, or will I need to start diving deeper\ninto the code?\n\nThanks,\n\nFrank\n- --\nFrank Sorenson - KD7TZK\nSystems Manager, Computer Science Department\nBrigham Young University\nfrank@tuxrocks.com\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.2.6 (GNU/Linux)\nComment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org\n\niD8DBQFCez2zaI0dwg4A47wRAuNAAJ0QsBkwwHFbFQshRGSDCLv/pEaZXQCfeZj6\nrqC9ZoVAYNeMwKqppbyXx9o=\n=pJDl\n-----END PGP SIGNATURE-----\n"},{"id":"2658","messageId":"20050506095904.GC11506@cip.informatik.uni-erlangen.de","threadId":"496","inReplyTo":"427B3DB3.4000507@tuxrocks.com","subject":"Re: How do I...","fromName":"Thomas Glanzmann","fromEmail":"sithglan@stud.uni-erlangen.de","sentAt":"2005-05-06T09:59:04Z","receivedAt":"2005-05-06T09:59:04Z","isPatch":false,"sender":{"key":"sithglan@stud.uni-erlangen.de","avatar":null},"body":"hello,\n\n> How can I git a list of commits that have modified a particular file?\n\nYou have to parse the git-rev-list and look at every single commit. But\nI think cogito as well as jit have a command to obtain that.\n\n> How can I output a list of the filename(s) modified by a particular\n> commit? (for example)\n\nA commit is only a pointer to a tree, so you can't. But you can see what\nfiles have changed between a parent (note: there are up to 16) and the\ndir which is associated with the commit:\n\ngit-diff-tree <child> <parent>\n\nSo calling git-diff-tree for every parent should do what you want.\n\n\tThomas\n"},{"id":"2659","messageId":"20050506100324.GD11506@cip.informatik.uni-erlangen.de","threadId":"496","inReplyTo":"20050506095904.GC11506@cip.informatik.uni-erlangen.de","subject":"Re: How do I...","fromName":"Thomas Glanzmann","fromEmail":"sithglan@stud.uni-erlangen.de","sentAt":"2005-05-06T10:03:24Z","receivedAt":"2005-05-06T10:03:24Z","isPatch":false,"sender":{"key":"sithglan@stud.uni-erlangen.de","avatar":null},"body":"Hello,\n\n> git-diff-tree <child> <parent>\n\nof course this is: git-diff-tree <parent> <child>\n\n\tThomas\n"},{"id":"2669","messageId":"1115390221.10459.4.camel@localhost","threadId":"496","inReplyTo":"427B3DB3.4000507@tuxrocks.com","subject":"Re: How do I...","fromName":"Dave Kleikamp","fromEmail":"shaggy@austin.ibm.com","sentAt":"2005-05-06T14:37:01Z","receivedAt":"2005-05-06T14:37:01Z","isPatch":false,"sender":{"key":"shaggy@austin.ibm.com","avatar":null},"body":"On Fri, 2005-05-06 at 03:49 -0600, Frank Sorenson wrote:\n\n> After doing a cg-update, can I cg-log just the changes since the last\n> update?  Alternatively, how can I tell cg-log I'm caught up, and don't\n> need anything historical?\n\n(Assuming pulling from \"origin\")\nInstead of doing cg-update, do cg-pull.  Then \"cg-log :origin\" will give\nyou you the changesets you just pulled.  \"cg-merge origin\" will then\ncomplete operation, thereby catching you up.\n\n-- \nDavid Kleikamp\nIBM Linux Technology Center\n\n"},{"id":"2671","messageId":"Pine.LNX.4.58.0505060905090.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"427B3DB3.4000507@tuxrocks.com","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T16:13:27Z","receivedAt":"2005-05-06T16:13:27Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, Frank Sorenson wrote:\n> \n> Okay, I've got some \"How can I?\" questions.  I hope I'm not the only one\n> still working to \"git it\".\n> \n> How can I git a list of commits that have modified a particular file?\n> For example, I'd like to do something like this:\n> # git-file-revs Makefile\n> f7eb55878f11575281add2a5726e483aed5e45bb\n> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n\nThere has been at least two different scripts for this posted, and one C \nsource code version.\n\nI just haven't integrated them, because I'm an idiot, and too much choice \nmakes me run around in small circles and clucking.\n\nGuys - whoever wrote one of the scripts, can you please send out your \ncurrent version to the git list and cc me, and explain why yours is \nsuperior to the other peoples version. Please?\n\nBut I might cook something up myself too. \n\n> How can I output a list of the filename(s) modified by a particular\n> commit? (for example)\n> # git-commit-info files 6741f3a7f9922391cd02b3ca1329e669497dc22f\n\nYou need to use \"git-tree-diff\", but it doesn't want one commit, it wants \ntwo.\n\nIn the case of \"what did this one commit change\", you need to look up its \nparents (there can be more than one! In fact, the current git repository \nhas one entry with _five_ parents), and then you need to select one of \nthem as the reference. In other words, if it's a merge, you need to select \nwhich side you care about.\n\n> Can I use cg-log to output just the information about a particular\n> commit?  (I don't need all the commits, just the one I'm interested in).\n\nYou don't even need cg-log for that. If you already know which commit \nyou're interested in, just output that one commit:\n\n\tgit-cat-file commit <commit-name-here>\n\n> After doing a cg-update, can I cg-log just the changes since the last\n> update?  Alternatively, how can I tell cg-log I'm caught up, and don't\n> need anything historical?\n\nI don't know how to do with with cg-update, but if you use the \n\"git-pull-script\" thing, you can do\n\n\tgit-diff-tree -p ORIG_HEAD HEAD\n\nwhich shows you what the pull brought in.\n\n> Can I do these with git/cogito, or will I need to start diving deeper\n> into the code?\n\nApart from finding the \"which commit changed this\", it's all trivially \ndoable. And the \"which commit\" thing is also trivially doable if you just \nfind the script..\n\n\t\tLinus\n"},{"id":"2677","messageId":"7vsm10cnx3.fsf@assigned-by-dhcp.cox.net","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505060905090.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-06T16:35:52Z","receivedAt":"2005-05-06T16:35:52Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"LT\" == Linus Torvalds <torvalds@osdl.org> writes:\n\nLT> On Fri, 6 May 2005, Frank Sorenson wrote:\n>> \n>> Okay, I've got some \"How can I?\" questions.  I hope I'm not the only one\n>> still working to \"git it\".\n>> \n>> How can I git a list of commits that have modified a particular file?\n>> For example, I'd like to do something like this:\n>> # git-file-revs Makefile\n>> f7eb55878f11575281add2a5726e483aed5e45bb\n>> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n>> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n\nLT> Guys - whoever wrote one of the scripts, can you please send out your \nLT> current version to the git list and cc me, and explain why yours is \nLT> superior to the other peoples version. Please?\n\nI think I mentioned and posted an interactive version called\njit-trackdown.  It is part of JIT found at [*1*].  You may have\nan older version that does not have the command.\n\nLT> But I might cook something up myself too. \n\nYourself or not, I think it is a good idea to do something that\ndoes exactly Frank wants, namely, just list commits.  Even\nbetter would be, to take commits with multiple parents into\naccount, list of <commit> <parent> pairs, like:\n\n    $ git-file-revs Makefile\n    f7eb55....... aaaaaa.......\n    f7eb55....... bbbbbb.......\n    aaaaaa....... dddddd.......\n\nwhich shows commit f7eb55... changed it relative to both of its\nparents aaaaaa... and bbbbbb...\n\n[Footnotes]\n*1* http://members.cox.net/junkio/\n\n"},{"id":"2680","messageId":"1115397368.16187.266.camel@hades.cambridge.redhat.com","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505060905090.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-06T16:36:07Z","receivedAt":"2005-05-06T16:36:07Z","isPatch":false,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Fri, 2005-05-06 at 09:13 -0700, Linus Torvalds wrote:\n> There has been at least two different scripts for this posted, and one C \n> source code version.\n> \n> I just haven't integrated them, because I'm an idiot, and too much choice \n> makes me run around in small circles and clucking.\n> \n> Guys - whoever wrote one of the scripts, can you please send out your \n> current version to the git list and cc me, and explain why yours is \n> superior to the other peoples version. Please?\n\nI already explained why mine sucks and shouldn't be merged. It was a\nproof of concept; hoping for the stone soup effect.\n\nI haven't seen a C version or indeed anything which actually does the\nright thing, although I outlined how it would work and _threatened_ to\ndo one. I had a half-arsed attempt at it on the way home from\nlinux.conf.au but my brain tends to melt while I'm on airplanes so I\ndidn't get very far.\n\n-- \ndwmw2\n\n"},{"id":"2681","messageId":"427B9DC5.9060905@tuxrocks.com","threadId":"496","inReplyTo":"1115390221.10459.4.camel@localhost","subject":"Re: How do I...","fromName":"Frank Sorenson","fromEmail":"frank@tuxrocks.com","sentAt":"2005-05-06T16:39:33Z","receivedAt":"2005-05-06T16:39:33Z","isPatch":false,"sender":{"key":"frank@tuxrocks.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nDave Kleikamp wrote:\n> On Fri, 2005-05-06 at 03:49 -0600, Frank Sorenson wrote:\n> \n> \n>>After doing a cg-update, can I cg-log just the changes since the last\n>>update?  Alternatively, how can I tell cg-log I'm caught up, and don't\n>>need anything historical?\n> \n> \n> (Assuming pulling from \"origin\")\n> Instead of doing cg-update, do cg-pull.  Then \"cg-log :origin\" will give\n> you you the changesets you just pulled.\n\nSuper.  This works great.  Thanks.\n\n> \"cg-merge origin\" will then\n> complete operation, thereby catching you up.\n\nOkay, not quite so great.  Here's the ouput when I ran it to update my\nkernel this morning.  Note that I haven't made any local modifications.\n I'm seeing this sort of thing often enough that I'm blowing away my\nwhole git tree and regenerating it to get back to a stable state once or\ntwice a week.  I'm sure there's another way, but without me making\nmodifications on my end, I wouldn't expect this to happen.  Suggestions\nare welcome! :)\n\n# cg-merge origin\nFast-forwarding 6741f3a7f9922391cd02b3ca1329e669497dc22f ->\n2512809255d018744fe6c2f5e996c83769846c07\n        on top of 6741f3a7f9922391cd02b3ca1329e669497dc22f...\npatching file fs/proc/Makefile\npatching file fs/proc/array.c\npatching file fs/proc/base.c\npatching file fs/proc/generic.c\npatching file fs/proc/inode-alloc.txt\npatching file fs/proc/inode.c\npatching file fs/proc/internal.h\npatching file fs/proc/kcore.c\npatching file fs/proc/kmsg.c\npatching file fs/proc/mmu.c\npatching file fs/proc/nommu.c\npatching file fs/proc/proc_devtree.c\npatching file fs/proc/proc_misc.c\npatching file fs/proc/proc_tty.c\npatching file fs/proc/root.c\npatching file fs/proc/task_mmu.c\npatching file fs/proc/task_nommu.c\ntouch: cannot touch `fs/proc/Makefile': No such file or directory\ntouch: cannot touch `fs/proc/array.c': No such file or directory\ntouch: cannot touch `fs/proc/base.c': No such file or directory\ntouch: cannot touch `fs/proc/generic.c': No such file or directory\ntouch: cannot touch `fs/proc/inode-alloc.txt': No such file or directory\ntouch: cannot touch `fs/proc/inode.c': No such file or directory\ntouch: cannot touch `fs/proc/internal.h': No such file or directory\ntouch: cannot touch `fs/proc/kcore.c': No such file or directory\ntouch: cannot touch `fs/proc/kmsg.c': No such file or directory\ntouch: cannot touch `fs/proc/mmu.c': No such file or directory\ntouch: cannot touch `fs/proc/nommu.c': No such file or directory\ntouch: cannot touch `fs/proc/proc_devtree.c': No such file or directory\ntouch: cannot touch `fs/proc/proc_misc.c': No such file or directory\ntouch: cannot touch `fs/proc/proc_tty.c': No such file or directory\ntouch: cannot touch `fs/proc/root.c': No such file or directory\ntouch: cannot touch `fs/proc/task_mmu.c': No such file or directory\ntouch: cannot touch `fs/proc/task_nommu.c': No such file or directory\nrm: cannot remove `fs/proc/Makefile': No such file or directory\nrm: cannot remove `fs/proc/array.c': No such file or directory\nrm: cannot remove `fs/proc/base.c': No such file or directory\nrm: cannot remove `fs/proc/generic.c': No such file or directory\nrm: cannot remove `fs/proc/inode-alloc.txt': No such file or directory\nrm: cannot remove `fs/proc/inode.c': No such file or directory\nrm: cannot remove `fs/proc/internal.h': No such file or directory\nrm: cannot remove `fs/proc/kcore.c': No such file or directory\nrm: cannot remove `fs/proc/kmsg.c': No such file or directory\nrm: cannot remove `fs/proc/mmu.c': No such file or directory\nrm: cannot remove `fs/proc/nommu.c': No such file or directory\nrm: cannot remove `fs/proc/proc_devtree.c': No such file or directory\nrm: cannot remove `fs/proc/proc_misc.c': No such file or directory\nrm: cannot remove `fs/proc/proc_tty.c': No such file or directory\nrm: cannot remove `fs/proc/root.c': No such file or directory\nrm: cannot remove `fs/proc/task_mmu.c': No such file or directory\nrm: cannot remove `fs/proc/task_nommu.c': No such file or directory\nfs/proc/Makefile: needs update\nfs/proc/array.c: needs update\nfs/proc/base.c: needs update\nfs/proc/generic.c: needs update\nfs/proc/inode-alloc.txt: needs update\nfs/proc/inode.c: needs update\nfs/proc/internal.h: needs update\nfs/proc/kcore.c: needs update\nfs/proc/kmsg.c: needs update\nfs/proc/mmu.c: needs update\nfs/proc/nommu.c: needs update\nfs/proc/proc_devtree.c: needs update\nfs/proc/proc_misc.c: needs update\nfs/proc/proc_tty.c: needs update\nfs/proc/root.c: needs update\nfs/proc/task_mmu.c: needs update\nfs/proc/task_nommu.c: needs update\n\n\nThanks,\nFrank\n- --\nFrank Sorenson - KD7TZK\nSystems Manager, Computer Science Department\nBrigham Young University\nfrank@tuxrocks.com\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.2.6 (GNU/Linux)\nComment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org\n\niD8DBQFCe53EaI0dwg4A47wRAt5dAJ4wEG8KmRvEnqLMOtDiNrZqRhURMgCfTUaE\nJLGGFnRN4YGhix/7SkOwAtg=\n=aDQu\n-----END PGP SIGNATURE-----\n"},{"id":"2682","messageId":"427B9FB3.1040002@tuxrocks.com","threadId":"496","inReplyTo":"7vsm10cnx3.fsf@assigned-by-dhcp.cox.net","subject":"Re: How do I...","fromName":"Frank Sorenson","fromEmail":"frank@tuxrocks.com","sentAt":"2005-05-06T16:47:47Z","receivedAt":"2005-05-06T16:47:47Z","isPatch":false,"sender":{"key":"frank@tuxrocks.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nJunio C Hamano wrote:\n> Yourself or not, I think it is a good idea to do something that\n> does exactly Frank wants, namely, just list commits.  Even\n> better would be, to take commits with multiple parents into\n> account, list of <commit> <parent> pairs, like:\n> \n>     $ git-file-revs Makefile\n>     f7eb55....... aaaaaa.......\n>     f7eb55....... bbbbbb.......\n>     aaaaaa....... dddddd.......\n> \n> which shows commit f7eb55... changed it relative to both of its\n> parents aaaaaa... and bbbbbb...\n\nNote that I could be just thinking about this all wrong, so my\nterminology could be in left field.  Here, I'm mostly just interested in\nthe case where \"Hey, something broke with drivers/char/i8k.c.  When was\nthis changed?  Who changed what?\"\n\nThanks,\n\nFrank\n- --\nFrank Sorenson - KD7TZK\nSystems Manager, Computer Science Department\nBrigham Young University\nfrank@tuxrocks.com\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.2.6 (GNU/Linux)\nComment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org\n\niD8DBQFCe5+yaI0dwg4A47wRAhIwAKD7R/D3ZU7JZz0mytEO04u04OTVZwCbBFhG\nsEYSTYiLLIMuLxU+r1mNuGw=\n=Mcg2\n-----END PGP SIGNATURE-----\n"},{"id":"2684","messageId":"Pine.LNX.4.58.0505061006060.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"7vsm10cnx3.fsf@assigned-by-dhcp.cox.net","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T17:09:17Z","receivedAt":"2005-05-06T17:09:17Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, Junio C Hamano wrote:\n> \n> LT> Guys - whoever wrote one of the scripts, can you please send out your \n> LT> current version to the git list and cc me, and explain why yours is \n> LT> superior to the other peoples version. Please?\n> \n> I think I mentioned and posted an interactive version called\n> jit-trackdown.  It is part of JIT found at [*1*].  You may have\n> an older version that does not have the command.\n\nActually, I spent some time just now to improve the interface to \ngit-diff-tree, allowing it to take a list of trees to compare from stdin.\n\nAnd if you only give it one entry on stdin, it assumes it is a commit,\nand lists the tree difference between that and the parent(s). If it's a \nmerge commit, it will ignore it unless you use \"-m\".\n\nSo now you can do\n\n\tgit-rev-list HEAD --max-count=10 | git-diff-tree --stdin update-cache.c\n\nto see which of the last 10 commits changed \"update-cache.c\".\n\nAnd if you add the \"-p\" flag, it will show it as a diff too.\n\nDamn, I'm good. It was just a few lines of code added to git-diff-tree.\n\n\t\tLinus\n"},{"id":"2687","messageId":"Pine.LNX.4.21.0505061321590.30848-100000@iabervon.org","threadId":"496","inReplyTo":"427B9FB3.1040002@tuxrocks.com","subject":"Re: How do I...","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2005-05-06T17:31:11Z","receivedAt":"2005-05-06T17:31:11Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Fri, 6 May 2005, Frank Sorenson wrote:\n\n> Note that I could be just thinking about this all wrong, so my\n> terminology could be in left field.  Here, I'm mostly just interested in\n> the case where \"Hey, something broke with drivers/char/i8k.c.  When was\n> this changed?  Who changed what?\"\n\nThe tricky thing is that you want to *not* see commits where somebody\nadopted somebody else's change to drivers/char/i8k.c; you want to ignore\nthose commits in favor of the commits where the original author of the\nchanges made the changes. Otherwise, you mostly see merges with people\nsubmitting lines where they didn't change that file.\n\n\t-Daniel\n*This .sig left intentionally blank*\n\n"},{"id":"2690","messageId":"1115402331.10460.16.camel@localhost","threadId":"496","inReplyTo":"427B9DC5.9060905@tuxrocks.com","subject":"Re: How do I...","fromName":"Dave Kleikamp","fromEmail":"shaggy@austin.ibm.com","sentAt":"2005-05-06T17:58:51Z","receivedAt":"2005-05-06T17:58:51Z","isPatch":false,"sender":{"key":"shaggy@austin.ibm.com","avatar":null},"body":"On Fri, 2005-05-06 at 10:39 -0600, Frank Sorenson wrote:\n> -----BEGIN PGP SIGNED MESSAGE-----\n> Hash: SHA1\n> \n> Dave Kleikamp wrote:\n> > On Fri, 2005-05-06 at 03:49 -0600, Frank Sorenson wrote:\n> > \n> > \n> >>After doing a cg-update, can I cg-log just the changes since the last\n> >>update?  Alternatively, how can I tell cg-log I'm caught up, and don't\n> >>need anything historical?\n> > \n> > \n> > (Assuming pulling from \"origin\")\n> > Instead of doing cg-update, do cg-pull.  Then \"cg-log :origin\" will give\n> > you you the changesets you just pulled.\n\nI'm not sure if I was clear.  cg-pull should be 'cg-pull origin\".\n\n> Super.  This works great.  Thanks.\n> \n> > \"cg-merge origin\" will then\n> > complete operation, thereby catching you up.\n> \n> Okay, not quite so great.  Here's the ouput when I ran it to update my\n> kernel this morning.  Note that I haven't made any local modifications.\n>  I'm seeing this sort of thing often enough that I'm blowing away my\n> whole git tree and regenerating it to get back to a stable state once or\n> twice a week.  I'm sure there's another way, but without me making\n> modifications on my end, I wouldn't expect this to happen.  Suggestions\n> are welcome! :)\n\nI take this to mean you're seeing problems with cg-update too. cg-update\nsimply runs cg-pull & cg-merge together, so running them separately\nshouldn't make any difference.\n\n> # cg-merge origin\n> Fast-forwarding 6741f3a7f9922391cd02b3ca1329e669497dc22f ->\n> 2512809255d018744fe6c2f5e996c83769846c07\n>         on top of 6741f3a7f9922391cd02b3ca1329e669497dc22f...\n> patching file fs/proc/Makefile\n> patching file fs/proc/array.c\n> patching file fs/proc/base.c\n> patching file fs/proc/generic.c\n> patching file fs/proc/inode-alloc.txt\n> patching file fs/proc/inode.c\n> patching file fs/proc/internal.h\n> patching file fs/proc/kcore.c\n> patching file fs/proc/kmsg.c\n> patching file fs/proc/mmu.c\n> patching file fs/proc/nommu.c\n> patching file fs/proc/proc_devtree.c\n> patching file fs/proc/proc_misc.c\n> patching file fs/proc/proc_tty.c\n> patching file fs/proc/root.c\n> patching file fs/proc/task_mmu.c\n> patching file fs/proc/task_nommu.c\n> touch: cannot touch `fs/proc/Makefile': No such file or directory\n> touch: cannot touch `fs/proc/array.c': No such file or directory\n> touch: cannot touch `fs/proc/base.c': No such file or directory\n> touch: cannot touch `fs/proc/generic.c': No such file or directory\n> touch: cannot touch `fs/proc/inode-alloc.txt': No such file or directory\n> touch: cannot touch `fs/proc/inode.c': No such file or directory\n> touch: cannot touch `fs/proc/internal.h': No such file or directory\n> touch: cannot touch `fs/proc/kcore.c': No such file or directory\n> touch: cannot touch `fs/proc/kmsg.c': No such file or directory\n> touch: cannot touch `fs/proc/mmu.c': No such file or directory\n> touch: cannot touch `fs/proc/nommu.c': No such file or directory\n> touch: cannot touch `fs/proc/proc_devtree.c': No such file or directory\n> touch: cannot touch `fs/proc/proc_misc.c': No such file or directory\n> touch: cannot touch `fs/proc/proc_tty.c': No such file or directory\n> touch: cannot touch `fs/proc/root.c': No such file or directory\n> touch: cannot touch `fs/proc/task_mmu.c': No such file or directory\n> touch: cannot touch `fs/proc/task_nommu.c': No such file or directory\n> rm: cannot remove `fs/proc/Makefile': No such file or directory\n> rm: cannot remove `fs/proc/array.c': No such file or directory\n> rm: cannot remove `fs/proc/base.c': No such file or directory\n> rm: cannot remove `fs/proc/generic.c': No such file or directory\n> rm: cannot remove `fs/proc/inode-alloc.txt': No such file or directory\n> rm: cannot remove `fs/proc/inode.c': No such file or directory\n> rm: cannot remove `fs/proc/internal.h': No such file or directory\n> rm: cannot remove `fs/proc/kcore.c': No such file or directory\n> rm: cannot remove `fs/proc/kmsg.c': No such file or directory\n> rm: cannot remove `fs/proc/mmu.c': No such file or directory\n> rm: cannot remove `fs/proc/nommu.c': No such file or directory\n> rm: cannot remove `fs/proc/proc_devtree.c': No such file or directory\n> rm: cannot remove `fs/proc/proc_misc.c': No such file or directory\n> rm: cannot remove `fs/proc/proc_tty.c': No such file or directory\n> rm: cannot remove `fs/proc/root.c': No such file or directory\n> rm: cannot remove `fs/proc/task_mmu.c': No such file or directory\n> rm: cannot remove `fs/proc/task_nommu.c': No such file or directory\n> fs/proc/Makefile: needs update\n> fs/proc/array.c: needs update\n> fs/proc/base.c: needs update\n> fs/proc/generic.c: needs update\n> fs/proc/inode-alloc.txt: needs update\n> fs/proc/inode.c: needs update\n> fs/proc/internal.h: needs update\n> fs/proc/kcore.c: needs update\n> fs/proc/kmsg.c: needs update\n> fs/proc/mmu.c: needs update\n> fs/proc/nommu.c: needs update\n> fs/proc/proc_devtree.c: needs update\n> fs/proc/proc_misc.c: needs update\n> fs/proc/proc_tty.c: needs update\n> fs/proc/root.c: needs update\n> fs/proc/task_mmu.c: needs update\n> fs/proc/task_nommu.c: needs update\n\nI've seen some isolated problems running cg-update/cg-merge to a clean\ntree with files that have been deleted.\n\nSaw this this morning:\n\nshaggy@kleikamp linus-clean $ cg-merge origin\nFast-forwarding bfd4bda097f8758d28e632ff2035e25577f6b060 ->\n2512809255d018744fe6c2f5e996c83769846c07\n        on top of bfd4bda097f8758d28e632ff2035e25577f6b060...\npatching file drivers/video/intelfb/intelfb.h\nshaggy@kleikamp linus-clean $ cg-status\n? drivers/video/intelfb/intelfbdrv.h\n\nRemoving the file manually appears to fix it.\n\n> Thanks,\n> Frank\n> - --\n> Frank Sorenson - KD7TZK\n> Systems Manager, Computer Science Department\n> Brigham Young University\n> frank@tuxrocks.com\n\n-- \nDavid Kleikamp\nIBM Linux Technology Center\n\n"},{"id":"2691","messageId":"1115404771.16187.343.camel@hades.cambridge.redhat.com","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505061006060.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-06T18:39:30Z","receivedAt":"2005-05-06T18:39:30Z","isPatch":false,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Fri, 2005-05-06 at 10:09 -0700, Linus Torvalds wrote:\n> So now you can do\n> \n>         git-rev-list HEAD --max-count=10 | git-diff-tree --stdin update-cache.c\n> \n> to see which of the last 10 commits changed \"update-cache.c\".\n\nNow show the graph of revision history which connects those commits.\n\n-- \ndwmw2\n\n"},{"id":"2693","messageId":"427BBDD7.90600@tuxrocks.com","threadId":"496","inReplyTo":"Pine.LNX.4.21.0505061321590.30848-100000@iabervon.org","subject":"Re: How do I...","fromName":"Frank Sorenson","fromEmail":"frank@tuxrocks.com","sentAt":"2005-05-06T18:56:23Z","receivedAt":"2005-05-06T18:56:23Z","isPatch":false,"sender":{"key":"frank@tuxrocks.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nDaniel Barkalow wrote:\n> On Fri, 6 May 2005, Frank Sorenson wrote:\n> \n> \n>>Note that I could be just thinking about this all wrong, so my\n>>terminology could be in left field.  Here, I'm mostly just interested in\n>>the case where \"Hey, something broke with drivers/char/i8k.c.  When was\n>>this changed?  Who changed what?\"\n> \n> \n> The tricky thing is that you want to *not* see commits where somebody\n> adopted somebody else's change to drivers/char/i8k.c; you want to ignore\n> those commits in favor of the commits where the original author of the\n> changes made the changes. Otherwise, you mostly see merges with people\n> submitting lines where they didn't change that file.\n\nTrue.  At least usually.  Sometimes, though, we'll want to see the\nentire history of the file, so we can see when it went (for example)\ninto Greg K-H's tree, then when Linus pulls into his tree, etc.  I guess\nthat makes \"just when the file itself has actually changed\" a special\ncase of the entire history of a particular file.\n\nFrank\n- --\nFrank Sorenson - KD7TZK\nSystems Manager, Computer Science Department\nBrigham Young University\nfrank@tuxrocks.com\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.2.6 (GNU/Linux)\nComment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org\n\niD8DBQFCe73XaI0dwg4A47wRAvxaAJ9E1mFepuHmTfvVfwr8zMwpqqcSZACgsz0M\nNVAd1f2ZGzu+NPqD3zDQ3Yo=\n=I3EA\n-----END PGP SIGNATURE-----\n"},{"id":"2694","messageId":"Pine.LNX.4.58.0505061145450.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"427B3DB3.4000507@tuxrocks.com","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T18:58:41Z","receivedAt":"2005-05-06T18:58:41Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, Frank Sorenson wrote:\n> \n> Okay, I've got some \"How can I?\" questions.  I hope I'm not the only one\n> still working to \"git it\".\n> \n> How can I git a list of commits that have modified a particular file?\n> For example, I'd like to do something like this:\n> # git-file-revs Makefile\n> f7eb55878f11575281add2a5726e483aed5e45bb\n> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n\nOk, I now have the perfect interface for _most_ uses of this thing.\n\nFor example, let's say that you are interested in \"what changed in the \nUSB input layer lately\". You can now do\n\n\tgit-rev-list | git-diff-tree -p -v --stdin drivers/usb/input | less -S\n\nand you'll get some very readable output that tells you _exactly_ what has \nchanged to any file in that subdirectory.\n\nOr, let's say that you're the author of the gt96100 ethernet driver (just \nto pick one that has both a .c and a .h file and that has had changes in \nthe current git tree, you'd do:\n\n\tgit-rev-list HEAD | git-diff-tree -p -v --stdin drivers/net/gt96100eth.* | less -S\n\nand it gives you _exactly_ what you want (ie thanks to how diff-tree\nworks, you can give it any number of files or directories you're\ninterested in).\n\nNormally, this thing will ignore merge commits, but if you want to see the\nmerges that the changes came through (a merge _can_ have real changes of\nits own too), add the \"-m\" flag to the git-diff-tree thing.\n\nTry out the above examples on the current kernel tree (and with my most\ncurrent git version as of five minutes ago - it shows up at least on\ngitweb, but I don't know if it's mirrored out with rsync yet). Very\npretty. Very useful.\n\n\t\tLinus\n"},{"id":"2695","messageId":"Pine.LNX.4.58.0505061158520.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"1115404771.16187.343.camel@hades.cambridge.redhat.com","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T18:59:49Z","receivedAt":"2005-05-06T18:59:49Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, David Woodhouse wrote:\n>\n> On Fri, 2005-05-06 at 10:09 -0700, Linus Torvalds wrote:\n> > So now you can do\n> > \n> >         git-rev-list HEAD --max-count=10 | git-diff-tree --stdin update-cache.c\n> > \n> > to see which of the last 10 commits changed \"update-cache.c\".\n> \n> Now show the graph of revision history which connects those commits.\n\nI don't do no steenking GUI's. That's for others, and you'll need to parse\nthe git-rev-list output yourself to do that.\n\n\t\tLinus\n"},{"id":"2697","messageId":"427BC071.5090000@tuxrocks.com","threadId":"496","inReplyTo":"1115402331.10460.16.camel@localhost","subject":"Re: How do I...","fromName":"Frank Sorenson","fromEmail":"frank@tuxrocks.com","sentAt":"2005-05-06T19:07:29Z","receivedAt":"2005-05-06T19:07:29Z","isPatch":false,"sender":{"key":"frank@tuxrocks.com","avatar":null},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nDave Kleikamp wrote:\n> I'm not sure if I was clear.  cg-pull should be 'cg-pull origin\".\n\nGot it, and it does just what I wanted.\n\n> I take this to mean you're seeing problems with cg-update too. cg-update\n> simply runs cg-pull & cg-merge together, so running them separately\n> shouldn't make any difference.\n\nYes.  cg-pull and cg-update have both shown odd breakage of this sort,\nputting my tree into a bad state.  Sometimes deleting files fixes it,\nbut more often than not, I've needed to just start a new tree again in\norder to fix it.  This is probably due to inexperience with git, but\ntree corruption probably shouldn't occur like this.\n\nFrank\n- --\nFrank Sorenson - KD7TZK\nSystems Manager, Computer Science Department\nBrigham Young University\nfrank@tuxrocks.com\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.2.6 (GNU/Linux)\nComment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org\n\niD8DBQFCe8BxaI0dwg4A47wRAk2OAJ915s2KHTNxrpi6k3wa7HiDhpOFGgCgrMxp\n73JzFxl7lg2c9korTF8L7Ek=\n=ILPh\n-----END PGP SIGNATURE-----\n"},{"id":"2698","messageId":"1115406628.16187.353.camel@hades.cambridge.redhat.com","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505061158520.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-06T19:10:27Z","receivedAt":"2005-05-06T19:10:27Z","isPatch":false,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Fri, 2005-05-06 at 11:59 -0700, Linus Torvalds wrote:\n> I don't do no steenking GUI's. That's for others, and you'll need to\n> parse the git-rev-list output yourself to do that.\n\nWhen I said 'show' I meant merely provide sufficient information. \n\nI believe that what you get at the moment from the command you showed is\nan unconnected list of commits, each of which may be in different\nbranches, where the _parent_ of each commit you show may not even be\nincluded in the list. \n\nI.e. you're giving them a bag of unconnected objects which each look\nsomething like this...\n\n\t\t (COMMIT)--> \nor\n\t\t (COMMIT)--->\n\t\t         \\-->\n\n\nBut you need to give them a _graph_...\n\n\t/------> (COMMIT) --> (COMMIT) --\\\n (COMMIT)                                 -> (COMMIT) \n\t\\-----------> (COMMIT) ----------/\n\nLeaving the pretty GUI as an exercise for the reader is fine. But we do\nactually have to give enough information to allow them to connect the\nbits together.\n\nMy recursive script attempted this but wasn't quite good enough -- we\nhad enough information to track _merges_ but not _branches_. Hence I was\nonly giving this much information...\n\n\t/------> (COMMIT) --> (COMMIT) --\\\n (COMMIT)                                 -> (COMMIT) \n\t              (COMMIT) ----------/\n\n(...or this one, depending on which order I parsed the tree...)\n\n\t         (COMMIT) --> (COMMIT) --\\\n (COMMIT)                                 -> (COMMIT) \n\t\\-----------> (COMMIT) ----------/\n\n-- \ndwmw2\n\n"},{"id":"2700","messageId":"15316.1115408107@www80.gmx.net","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505061158520.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"Thomas Kolejka","fromEmail":"thomas.kolejka@gmx.at","sentAt":"2005-05-06T19:35:07Z","receivedAt":"2005-05-06T19:35:07Z","isPatch":false,"sender":{"key":"thomas.kolejka@gmx.at","avatar":null},"body":"\nI've written a script that shows all commits when a certain file was\nchanged.\n\nIt goes back the commits, looks into the tree ... and if a change is found,\nprint out the commit.\n\n\nThomas\n\n\n\n--- /dev/null\t1970-01-01 01:00:00.000000000 +0100\n+++ git-file-history-script\t2005-05-06 21:24:41.000000000 +0200\n@@ -0,0 +1,59 @@\n+#!/bin/sh\n+# \n+# Copyright (C) 2005 Thomas Kolejka\n+#\n+# usage - $0 [commit] pathname\n+\n+\n+if [ $# -gt 1 ]\n+then\n+\tHEAD=$1\n+\tshift\n+else\n+\tHEAD=`cat $SHA1_FILE_DIRECTORY/../HEAD`\n+fi\n+\n+git-cat-file commit $HEAD >> /dev/null\n+\n+if [ $? -ne 0 ]\n+then\n+\texit\n+fi\n+\n+f_name=$1\n+\n+\n+echo \"starting from commit $HEAD\"\n+\n+last_sha1=\"last-revision\"\n+last_commit=$HEAD\n+\n+git-rev-list $HEAD | while read the_commit\n+do\n+\n+\tthe_tree=`git-cat-file commit $the_commit|head -n1 | awk '{ print $2 }'`\n+\n+\n+\tthe_sha1=`git-ls-tree -r $the_tree|grep -w \"${f_name}$\"|awk '{ print $3\n}'`\n+\n+\tif [ -z \"$the_sha1\" ]\n+\tthen\n+\t\tcontinue\n+\tfi\n+\n+\n+\tif [ $last_sha1 != $the_sha1 ]\n+\tthen\n+\t\techo commit $the_commit - tree $the_tree - sha1 $the_sha1\n+\t\techo \" \"\n+\t\t# echo \"$the_sha1 -> $last_sha1\"\n+\t\tlast_sha1=$the_sha1\n+\t\tgit-cat-file commit $last_commit\n+\n+\t\techo \" \"\n+\t\techo \" \"\n+\t\techo \" \"\n+\tfi\n+\n+\tlast_commit=$the_commit\n+done\n\n-- \n+++ Neu: Echte DSL-Flatrates von GMX - Surfen ohne Limits +++\nAlways online ab 4,99 Euro/Monat: http://www.gmx.net/de/go/dsl\n"},{"id":"2714","messageId":"Pine.LNX.4.58.0505061552140.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"1115406628.16187.353.camel@hades.cambridge.redhat.com","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T22:57:34Z","receivedAt":"2005-05-06T22:57:34Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 6 May 2005, David Woodhouse wrote:\n> \n> When I said 'show' I meant merely provide sufficient information. \n\nTo do that, you'd just have to always show the commit/parent pairs, \nregardless of whether it had a difference or not. That's actually what the \nfirst version did, but it was so ugly that I ended up changing it to only \nshowing pairs that had differences. \n\nIt would be easy to add a \"--all\" flag or something, that shows all \ncommit/parent information, and then you would use that, but the thing is, \nyou're likely better off just using git-rev-tree to build the graph in the \nfirst place.\n\nSo it's doable, and it has nothing to do with git-diff-tree. So normally\nyou'd do something like \"show me all differences between v2.6.12-rc2 and\nnow, and then you _do_ end up using git-rev-tree first to make a list of\ncommits, and then you feed that list of commits into git-diff-tree - and\nnotice that when you did the rev-tree in the first place, you actually did\nbuild up the history tree to get there, so if you want to visualize it,\nyou should now use _that_ tree that you already built.\n\ndiff-tree never has any commit history tree information available to it.  \nIt just doesn't know, care, or bother. \n\n\t\tLinus\n"},{"id":"2717","messageId":"1115421642.29495.53.camel@localhost.localdomain","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505061552140.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-06T23:20:40Z","receivedAt":"2005-05-06T23:20:40Z","isPatch":false,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Fri, 2005-05-06 at 15:57 -0700, Linus Torvalds wrote:\n> To do that, you'd just have to always show the commit/parent pairs, \n> regardless of whether it had a difference or not.\n\nNah, you just prune the commits from which aren't interesting, then dump\nthe graph you're left with. So instead of printing just the immediate\nparent(s) for each interesting commit, you print the \"nearest\ninteresting ancestor(s)\".\n\nTake copy of rev-tree, let it mark commits as interesting if they touch\nthe file(s) in question, then effectively perform a list_del() on any\ncommit which _isn't_ interesting, and any merge which merges only\nuninteresting commits... then dump the resulting pruned graph.\n\n-- \ndwmw2\n\n"},{"id":"2723","messageId":"Pine.LNX.4.58.0505061652240.2233@ppc970.osdl.org","threadId":"496","inReplyTo":"1115421642.29495.53.camel@localhost.localdomain","subject":"Re: How do I...","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-05-06T23:54:43Z","receivedAt":"2005-05-06T23:54:43Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Sat, 7 May 2005, David Woodhouse wrote:\n> \n> Nah, you just prune the commits from which aren't interesting, then dump\n> the graph you're left with. So instead of printing just the immediate\n> parent(s) for each interesting commit, you print the \"nearest\n> interesting ancestor(s)\".\n\nNope. That's just stupid. \n\nUse the whole commit history, and if you want to simplify it from there\nonce you notice that some branches end up never being interesting, then\nthat's ok.\n\nBut trying to be clever while building this up is just crazy talk. When\ndiff-tree prints out the changes, it has no way of knowing what the\ncontext around it was - it doesn't know about merges far away, and it\n_shouldn't_ know.\n\n\t\tLinus\n"},{"id":"2729","messageId":"1115426703.23609.27.camel@gaston","threadId":"496","inReplyTo":"1115397368.16187.266.camel@hades.cambridge.redhat.com","subject":"Re: How do I...","fromName":"Benjamin Herrenschmidt","fromEmail":"benh@kernel.crashing.org","sentAt":"2005-05-07T00:45:03Z","receivedAt":"2005-05-07T00:45:03Z","isPatch":false,"sender":{"key":"benh@kernel.crashing.org","avatar":null},"body":"On Fri, 2005-05-06 at 17:36 +0100, David Woodhouse wrote:\n> On Fri, 2005-05-06 at 09:13 -0700, Linus Torvalds wrote:\n> > There has been at least two different scripts for this posted, and one C \n> > source code version.\n> > \n> > I just haven't integrated them, because I'm an idiot, and too much choice \n> > makes me run around in small circles and clucking.\n> > \n> > Guys - whoever wrote one of the scripts, can you please send out your \n> > current version to the git list and cc me, and explain why yours is \n> > superior to the other peoples version. Please?\n> \n> I already explained why mine sucks and shouldn't be merged. It was a\n> proof of concept; hoping for the stone soup effect.\n> \n> I haven't seen a C version or indeed anything which actually does the\n> right thing, although I outlined how it would work and _threatened_ to\n> do one. I had a half-arsed attempt at it on the way home from\n> linux.conf.au but my brain tends to melt while I'm on airplanes so I\n> didn't get very far.\n\nNote that paulus current dirdiff CVS can diff arbitrary revs of a git\ntree afaik (or a rev against current edited content).\n\nBen.\n\n\n"},{"id":"2740","messageId":"1115456316.29495.57.camel@localhost.localdomain","threadId":"496","inReplyTo":"Pine.LNX.4.58.0505061652240.2233@ppc970.osdl.org","subject":"Re: How do I...","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-07T08:58:35Z","receivedAt":"2005-05-07T08:58:35Z","isPatch":false,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Fri, 2005-05-06 at 16:54 -0700, Linus Torvalds wrote:\n> But trying to be clever while building this up is just crazy talk. When\n> diff-tree prints out the changes, it has no way of knowing what the\n> context around it was - it doesn't know about merges far away, and it\n> _shouldn't_ know.\n\nIsn't that what I suggested? Start with full history, mark the\n'interesting' commits which touch the file(s) in question, then prune.\n\n-- \ndwmw2\n\n"}]}