{"thread":{"id":"20623","subject":"sparse support in pu","startedAt":"2009-08-17T06:09:33Z","lastAt":"2009-08-17T17:13:59Z","messageCount":21,"participants":["skillzero@gmail.com","Nguyen Thai Ngoc Duy","Johannes Schindelin","Johannes Sixt","Peter Harris","Junio C Hamano","James Pickens"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"120830","messageId":"2729632a0908162309ma6e7d41kc3bafe4575120630@mail.gmail.com","threadId":"20623","inReplyTo":null,"subject":"sparse support in pu","fromName":"","fromEmail":"skillzero@gmail.com","sentAt":"2009-08-17T06:09:33Z","receivedAt":"2009-08-17T06:09:33Z","isPatch":false,"sender":{"key":"skillzero@gmail.com","avatar":null},"body":"I had a couple comments and questions about the sparse stuff recently\nmerged into pu. First, I think it's an awesome feature. It's a nice\nsolution to my problems (1.5 GB tree where most people only need a\nsmall subset, but with a lot of shared pieces).\n\n1. Have people decided whether it should be on by default if you have\na .git/info/sparse file? I'd definitely like it to be on by default.\nWhen I first tried it, I didn't realize I had to use --sparse to git\ncheckout to get it to use the sparse rules. The same goes for a merge\nI did that happened to have a file in the excluded area (it included\nit because I didn't use --sparse to git merge).\n\n2. Is it not hooked up to git reset yet? I did a git checkout --sparse\nand things look liked I expected then I did a git reset --hard\norigin/master and it started checking out all the stuff previously\nexcluded via .git/info/sparse. I tried --sparse, but it didn't know\nabout that option.\n\n3. One thing that was confusing is that I needed a trailing slash on\ndirectories in .git/info/sparse to get them excluded. This seems\ndifferent than .gitignore, which works for me without the trailing\nslash.\n\nBTW...How to people normally try out stuff in pu? Do you just replace\nyour normal git stuff with the pu build? That's what I did because I\nwasn't sure if I did /test/git if the other tools git invokes would\nuse the release version of git or the ones relative to itself (i.e.\nthe ones in /test/ for me). It seems like the only way to really test\nstuff is to use it for your real work, but I also don't want to\ncorrupt our production repositories by using an experimental version\nof git.\n"},{"id":"120845","messageId":"fcaeb9bf0908170117v67e9f8b1ga56edcda14821e91@mail.gmail.com","threadId":"20623","inReplyTo":"2729632a0908162309ma6e7d41kc3bafe4575120630@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T08:17:11Z","receivedAt":"2009-08-17T08:17:11Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n> 1. Have people decided whether it should be on by default if you have\n> a .git/info/sparse file? I'd definitely like it to be on by default.\n> When I first tried it, I didn't realize I had to use --sparse to git\n> checkout to get it to use the sparse rules. The same goes for a merge\n> I did that happened to have a file in the excluded area (it included\n> it because I didn't use --sparse to git merge).\n\nI tend to make it enabled by default too. I have made it stricter to\ntrigger reading sparse in unpack_trees() -- only do it when\nunpack_opts.update is TRUE. This should make it safer to be enabled by\ndefault.\n\n> 2. Is it not hooked up to git reset yet? I did a git checkout --sparse\n> and things look liked I expected then I did a git reset --hard\n> origin/master and it started checking out all the stuff previously\n> excluded via .git/info/sparse. I tried --sparse, but it didn't know\n> about that option.\n\nBecause sparse was disabled by default, and \"git reset\" did not enable\nit. It'd be interesting to see what \"git reset --hard\" should do in\nthis case: will it apply .git/info/sparse or not, which brings us back\nto the \"default or not\" question, hmm..\n\n> 3. One thing that was confusing is that I needed a trailing slash on\n> directories in .git/info/sparse to get them excluded. This seems\n> different than .gitignore, which works for me without the trailing\n> slash.\n\nHmm.. probably because Git feeds directories to .gitignore handling\nfunctions. There is not much I can do, index does not have\ndirectories. I don't know if it's worth generating \"directories\" from\nindex.\n-- \nDuy\n"},{"id":"120849","messageId":"2729632a0908170149o425544dcw52aeb6ac6ee1437d@mail.gmail.com","threadId":"20623","inReplyTo":"fcaeb9bf0908170117v67e9f8b1ga56edcda14821e91@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"","fromEmail":"skillzero@gmail.com","sentAt":"2009-08-17T08:49:31Z","receivedAt":"2009-08-17T08:49:31Z","isPatch":false,"sender":{"key":"skillzero@gmail.com","avatar":null},"body":"On Mon, Aug 17, 2009 at 1:17 AM, Nguyen Thai Ngoc Duy<pclouds@gmail.com> wrote:\n> On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n>> 1. Have people decided whether it should be on by default if you have\n>> a .git/info/sparse file? I'd definitely like it to be on by default.\n>> When I first tried it, I didn't realize I had to use --sparse to git\n>> checkout to get it to use the sparse rules. The same goes for a merge\n>> I did that happened to have a file in the excluded area (it included\n>> it because I didn't use --sparse to git merge).\n>\n> I tend to make it enabled by default too. I have made it stricter to\n> trigger reading sparse in unpack_trees() -- only do it when\n> unpack_opts.update is TRUE. This should make it safer to be enabled by\n> default.\n\nOther than it being new and not-widely-tested code, is there any\nadditional risk to having it enabled by default if there are no sparse\npatterns defined?\n\nIt would be nice if .git/info/sparse is there by default (like\n.git/info/exclude) with some commented out instructions (also like\n.git/info/exclude).\n\n>> 2. Is it not hooked up to git reset yet? I did a git checkout --sparse\n>> and things look liked I expected then I did a git reset --hard\n>> origin/master and it started checking out all the stuff previously\n>> excluded via .git/info/sparse. I tried --sparse, but it didn't know\n>> about that option.\n>\n> Because sparse was disabled by default, and \"git reset\" did not enable\n> it. It'd be interesting to see what \"git reset --hard\" should do in\n> this case: will it apply .git/info/sparse or not, which brings us back\n> to the \"default or not\" question, hmm..\n\nIt seems like if it's going to be off by default (which it hopefully\nwon't be) then git reset would need to support --sparse since\notherwise, you'd never be able to git reset without undoing your\nsparse options (unless you did a subsequent git checkout --sparse).\n\nI also noticed that after I did the git reset, the sparse stuff seemed\nto get into a weird state such that sparse patterns weren't working\nreliably. For example, I couldn't get it to exclude a directory.\n\n>> 3. One thing that was confusing is that I needed a trailing slash on\n>> directories in .git/info/sparse to get them excluded. This seems\n>> different than .gitignore, which works for me without the trailing\n>> slash.\n>\n> Hmm.. probably because Git feeds directories to .gitignore handling\n> functions. There is not much I can do, index does not have\n> directories. I don't know if it's worth generating \"directories\" from\n> index.\n\nMaybe just add a note in the documentation? If there's a default\n.git/info/sparse file then it might be good place to put a note as\nwell.\n"},{"id":"120854","messageId":"alpine.DEB.1.00.0908171113420.4991@intel-tinevez-2-302","threadId":"20623","inReplyTo":"2729632a0908170149o425544dcw52aeb6ac6ee1437d@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T09:15:57Z","receivedAt":"2009-08-17T09:15:57Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, skillzero@gmail.com wrote:\n\n> On Mon, Aug 17, 2009 at 1:17 AM, Nguyen Thai Ngoc Duy<pclouds@gmail.com> wrote:\n> > On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n> >> 1. Have people decided whether it should be on by default if you have \n> >>    a .git/info/sparse file? I'd definitely like it to be on by \n> >>    default.  When I first tried it, I didn't realize I had to use \n> >>    --sparse to git checkout to get it to use the sparse rules. The \n> >>    same goes for a merge I did that happened to have a file in the \n> >>    excluded area (it included it because I didn't use --sparse to git \n> >>    merge).\n> >\n> > I tend to make it enabled by default too. I have made it stricter to \n> > trigger reading sparse in unpack_trees() -- only do it when \n> > unpack_opts.update is TRUE. This should make it safer to be enabled by \n> > default.\n> \n> Other than it being new and not-widely-tested code, is there any \n> additional risk to having it enabled by default if there are no sparse \n> patterns defined?\n\nI think that in and of itself is reason enough to turn off the feature \nwhen .git/info/sparse is not present.\n\nIt also may have a runtime cost, dunno.\n\n> It would be nice if .git/info/sparse is there by default (like\n> .git/info/exclude) with some commented out instructions (also like\n> .git/info/exclude).\n\nI'm not a fan of this idea.\n\n> >> 3. One thing that was confusing is that I needed a trailing slash on \n> >>    directories in .git/info/sparse to get them excluded. This seems \n> >>    different than .gitignore, which works for me without the trailing \n> >>    slash.\n> >\n> > Hmm.. probably because Git feeds directories to .gitignore handling \n> > functions. There is not much I can do, index does not have \n> > directories. I don't know if it's worth generating \"directories\" from \n> > index.\n> \n> Maybe just add a note in the documentation? If there's a default \n> .git/info/sparse file then it might be good place to put a note as well.\n\nI rather think that this should be fixed.  Maybe you can come up with a \npatch to the tests which shows this behavior (with test_expect_failure)?  \nThen it will be much easier to come up with a fix.\n\nCiao,\nDscho\n"},{"id":"120855","messageId":"2729632a0908170241m415867e6t4286f8bfb6116c26@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171113420.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"","fromEmail":"skillzero@gmail.com","sentAt":"2009-08-17T09:41:57Z","receivedAt":"2009-08-17T09:41:57Z","isPatch":false,"sender":{"key":"skillzero@gmail.com","avatar":null},"body":"On Mon, Aug 17, 2009 at 2:15 AM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, skillzero@gmail.com wrote:\n>\n>> On Mon, Aug 17, 2009 at 1:17 AM, Nguyen Thai Ngoc Duy<pclouds@gmail.com> wrote:\n>> > On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n>> >> 1. Have people decided whether it should be on by default if you have\n>> >>    a .git/info/sparse file? I'd definitely like it to be on by\n>> >>    default.  When I first tried it, I didn't realize I had to use\n>> >>    --sparse to git checkout to get it to use the sparse rules. The\n>> >>    same goes for a merge I did that happened to have a file in the\n>> >>    excluded area (it included it because I didn't use --sparse to git\n>> >>    merge).\n>> >\n>> > I tend to make it enabled by default too. I have made it stricter to\n>> > trigger reading sparse in unpack_trees() -- only do it when\n>> > unpack_opts.update is TRUE. This should make it safer to be enabled by\n>> > default.\n>>\n>> Other than it being new and not-widely-tested code, is there any\n>> additional risk to having it enabled by default if there are no sparse\n>> patterns defined?\n>\n> I think that in and of itself is reason enough to turn off the feature\n> when .git/info/sparse is not present.\n>\n> It also may have a runtime cost, dunno.\n\nI was thinking that it would effectively do this:\n\nTry to read .git/info/sparse\nif valid patterns read\n   Sparse is enabled\nelse (e.g. file missing or nothing but empty lines/comments)\n   Sparse is disabled\n\nI wouldn't think there would be any additional cost or risk (other\nthan the extra code to read the .git/info/sparse file) because the\nresult is the same as if sparse had been disabled by being defaulted\nto off since even in the default off case, it's still a runtime check.\n\nI would think --sparse would really only be useful as a way to negate\n--no-sparse (i.e. act as if .git/info/sparse didn't exist\ntemporarily).\n"},{"id":"120856","messageId":"4A89282A.3020907@viscovery.net","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171113420.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2009-08-17T09:51:38Z","receivedAt":"2009-08-17T09:51:38Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Johannes Schindelin schrieb:\n> On Mon, 17 Aug 2009, skillzero@gmail.com wrote:\n>> On Mon, Aug 17, 2009 at 1:17 AM, Nguyen Thai Ngoc Duy<pclouds@gmail.com> wrote:\n>>> On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n>>>> 1. Have people decided whether it should be on by default if you have \n>>>>    a .git/info/sparse file? I'd definitely like it to be on by \n>>>>    default.  When I first tried it, I didn't realize I had to use \n>>>>    --sparse to git checkout to get it to use the sparse rules. The \n>>>>    same goes for a merge I did that happened to have a file in the \n>>>>    excluded area (it included it because I didn't use --sparse to git \n>>>>    merge).\n>>> I tend to make it enabled by default too. I have made it stricter to \n>>> trigger reading sparse in unpack_trees() -- only do it when \n>>> unpack_opts.update is TRUE. This should make it safer to be enabled by \n>>> default.\n>> Other than it being new and not-widely-tested code, is there any \n>> additional risk to having it enabled by default if there are no sparse \n>> patterns defined?\n> \n> I think that in and of itself is reason enough to turn off the feature \n> when .git/info/sparse is not present.\n\nI might have missed something: Would there be any observable difference\nbetween whether .git/info/sparse is absent and whether it is empty? If\nnot, what do you mean by \"turn the feature off\"?\n\n>> It would be nice if .git/info/sparse is there by default (like\n>> .git/info/exclude) with some commented out instructions (also like\n>> .git/info/exclude).\n> \n> I'm not a fan of this idea.\n\nFor any particular reason?\n\n-- Hannes\n"},{"id":"120857","messageId":"alpine.DEB.1.00.0908171153070.4991@intel-tinevez-2-302","threadId":"20623","inReplyTo":"4A89282A.3020907@viscovery.net","subject":"Re: sparse support in pu","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T09:57:08Z","receivedAt":"2009-08-17T09:57:08Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Johannes Sixt wrote:\n\n> Johannes Schindelin schrieb:\n> > On Mon, 17 Aug 2009, skillzero@gmail.com wrote:\n> >> On Mon, Aug 17, 2009 at 1:17 AM, Nguyen Thai Ngoc Duy<pclouds@gmail.com> wrote:\n> >>> On Mon, Aug 17, 2009 at 1:09 PM, <skillzero@gmail.com> wrote:\n> >>>> 1. Have people decided whether it should be on by default if you have \n> >>>>    a .git/info/sparse file? I'd definitely like it to be on by \n> >>>>    default.  When I first tried it, I didn't realize I had to use \n> >>>>    --sparse to git checkout to get it to use the sparse rules. The \n> >>>>    same goes for a merge I did that happened to have a file in the \n> >>>>    excluded area (it included it because I didn't use --sparse to git \n> >>>>    merge).\n> >>> I tend to make it enabled by default too. I have made it stricter to \n> >>> trigger reading sparse in unpack_trees() -- only do it when \n> >>> unpack_opts.update is TRUE. This should make it safer to be enabled by \n> >>> default.\n> >> Other than it being new and not-widely-tested code, is there any \n> >> additional risk to having it enabled by default if there are no sparse \n> >> patterns defined?\n> > \n> > I think that in and of itself is reason enough to turn off the feature \n> > when .git/info/sparse is not present.\n> \n> I might have missed something: Would there be any observable difference\n> between whether .git/info/sparse is absent and whether it is empty?\n\nThere _should_ not be an _observable_ difference.\n\n> If not, what do you mean by \"turn the feature off\"?\n\nThere is a global variable which triggers the code path that looks through \nthe sparse patterns.  I'd like this variable to be \"off\" by default.\n\n> >> It would be nice if .git/info/sparse is there by default (like \n> >> .git/info/exclude) with some commented out instructions (also like \n> >> .git/info/exclude).\n> > \n> > I'm not a fan of this idea.\n> \n> For any particular reason?\n\nFirst, it is an experimental feature.  I'd hate it if people who do not \nwant to use the sparse feature are affected.\n\nSecond, even if the sparse pattern list is empty, an additional call to \nthe function that matches files against the pattern would take additional \nruntime.\n\nIf I had time, I could think of a third reason.\n\nCiao,\nDscho\n"},{"id":"120860","messageId":"fcaeb9bf0908170321o43fa4a6bv95dd78ff7889686f@mail.gmail.com","threadId":"20623","inReplyTo":"2729632a0908170149o425544dcw52aeb6ac6ee1437d@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T10:21:09Z","receivedAt":"2009-08-17T10:21:09Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"[I haven't read the rest of the mail, will read it through later]\n\nOn Mon, Aug 17, 2009 at 3:49 PM, <skillzero@gmail.com> wrote:\n> It would be nice if .git/info/sparse is there by default (like\n> .git/info/exclude) with some commented out instructions (also like\n> .git/info/exclude).\n\nNo it can't be there by default. An empty .git/info/sparse means clear\nassume-unchanged bit out of all files in index. It's not the same as\nlacking .git/info/sparse (which does disable sparse checkout feature).\n-- \nDuy\n"},{"id":"120861","messageId":"4A8932BB.7030002@viscovery.net","threadId":"20623","inReplyTo":"fcaeb9bf0908170321o43fa4a6bv95dd78ff7889686f@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2009-08-17T10:36:43Z","receivedAt":"2009-08-17T10:36:43Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Nguyen Thai Ngoc Duy schrieb:\n> [I haven't read the rest of the mail, will read it through later]\n> \n> On Mon, Aug 17, 2009 at 3:49 PM, <skillzero@gmail.com> wrote:\n>> It would be nice if .git/info/sparse is there by default (like\n>> .git/info/exclude) with some commented out instructions (also like\n>> .git/info/exclude).\n> \n> No it can't be there by default. An empty .git/info/sparse means clear\n> assume-unchanged bit out of all files in index. It's not the same as\n> lacking .git/info/sparse (which does disable sparse checkout feature).\n\nHuh? Shouldn't the meaning of .git/info/sparse be: \"the files mentioned in\nthis file are not checked out.\" That is, if the file is empty, then no\nfile is not checked out, IOW, all files are checked out.\n\nIn order to advocate my earlier proposal: Name the file\n.git/info/phantoms, then it's clear: \"The files mentioned here are\nphantoms\" - they exist in the index, but not in the worktree; no phantoms\nmeans that everything is checked out.\n\n-- Hannes\n"},{"id":"120864","messageId":"fcaeb9bf0908170441o30005085nb0d4e08f333b6146@mail.gmail.com","threadId":"20623","inReplyTo":"4A8932BB.7030002@viscovery.net","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T11:41:29Z","receivedAt":"2009-08-17T11:41:29Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Aug 17, 2009 at 5:36 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n> Nguyen Thai Ngoc Duy schrieb:\n>> [I haven't read the rest of the mail, will read it through later]\n>>\n>> On Mon, Aug 17, 2009 at 3:49 PM, <skillzero@gmail.com> wrote:\n>>> It would be nice if .git/info/sparse is there by default (like\n>>> .git/info/exclude) with some commented out instructions (also like\n>>> .git/info/exclude).\n>>\n>> No it can't be there by default. An empty .git/info/sparse means clear\n>> assume-unchanged bit out of all files in index. It's not the same as\n>> lacking .git/info/sparse (which does disable sparse checkout feature).\n>\n> Huh? Shouldn't the meaning of .git/info/sparse be: \"the files mentioned in\n> this file are not checked out.\" That is, if the file is empty, then no\n> file is not checked out, IOW, all files are checked out.\n\nThat's correct. Empty .git/info/sparse -> no assume-unchanged files ->\nall files are checked out. That's what I meant. It's different from\nempty .git/info/sparse as \"don't touch index and worktree, leave them\nas they are no matther if they have assume-unchanged files\".\n\n> In order to advocate my earlier proposal: Name the file\n> .git/info/phantoms, then it's clear: \"The files mentioned here are\n> phantoms\" - they exist in the index, but not in the worktree; no phantoms\n> means that everything is checked out.\n\nOK. Phantom checkout, must be unique in VCS world ;-) If no one\nobjects my next series will use this name as it's better than \"sparse\"\nand \"assume-unchanged\" is just too vague. Would option names to\nenable/disable this be --with[out]-phantoms?\n-- \nDuy\n"},{"id":"120866","messageId":"fcaeb9bf0908170443r209cbe75xd361bffb4260c32b@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171113420.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T11:43:16Z","receivedAt":"2009-08-17T11:43:16Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Aug 17, 2009 at 4:15 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n>> >> 3. One thing that was confusing is that I needed a trailing slash on\n>> >>    directories in .git/info/sparse to get them excluded. This seems\n>> >>    different than .gitignore, which works for me without the trailing\n>> >>    slash.\n>> >\n>> > Hmm.. probably because Git feeds directories to .gitignore handling\n>> > functions. There is not much I can do, index does not have\n>> > directories. I don't know if it's worth generating \"directories\" from\n>> > index.\n>>\n>> Maybe just add a note in the documentation? If there's a default\n>> .git/info/sparse file then it might be good place to put a note as well.\n>\n> I rather think that this should be fixed.  Maybe you can come up with a\n> patch to the tests which shows this behavior (with test_expect_failure)?\n> Then it will be much easier to come up with a fix.\n\nAgreed. Thanks.\n-- \nDuy\n"},{"id":"120867","messageId":"4A894676.1090803@viscovery.net","threadId":"20623","inReplyTo":"fcaeb9bf0908170441o30005085nb0d4e08f333b6146@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2009-08-17T12:00:54Z","receivedAt":"2009-08-17T12:00:54Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Nguyen Thai Ngoc Duy schrieb:\n> On Mon, Aug 17, 2009 at 5:36 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n>> In order to advocate my earlier proposal: Name the file\n>> .git/info/phantoms, then it's clear: \"The files mentioned here are\n>> phantoms\" - they exist in the index, but not in the worktree; no phantoms\n>> means that everything is checked out.\n> \n> OK. Phantom checkout, must be unique in VCS world ;-) If no one\n> objects my next series will use this name as it's better than \"sparse\"\n> and \"assume-unchanged\" is just too vague. Would option names to\n> enable/disable this be --with[out]-phantoms?\n\n--phantoms vs. --no-phantoms?\n\n-- Hannes\n"},{"id":"120868","messageId":"fcaeb9bf0908170519g71741643i8029845440bba654@mail.gmail.com","threadId":"20623","inReplyTo":"4A894676.1090803@viscovery.net","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T12:19:27Z","receivedAt":"2009-08-17T12:19:27Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Aug 17, 2009 at 7:00 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n> Nguyen Thai Ngoc Duy schrieb:\n>> On Mon, Aug 17, 2009 at 5:36 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n>>> In order to advocate my earlier proposal: Name the file\n>>> .git/info/phantoms, then it's clear: \"The files mentioned here are\n>>> phantoms\" - they exist in the index, but not in the worktree; no phantoms\n>>> means that everything is checked out.\n>>\n>> OK. Phantom checkout, must be unique in VCS world ;-) If no one\n>> objects my next series will use this name as it's better than \"sparse\"\n>> and \"assume-unchanged\" is just too vague. Would option names to\n>> enable/disable this be --with[out]-phantoms?\n>\n> --phantoms vs. --no-phantoms?\n\nYeah good too. I have probably dealed with autotools too much lately.\n-- \nDuy\n"},{"id":"120869","messageId":"alpine.DEB.1.00.0908171425410.4991@intel-tinevez-2-302","threadId":"20623","inReplyTo":"fcaeb9bf0908170441o30005085nb0d4e08f333b6146@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T12:29:14Z","receivedAt":"2009-08-17T12:29:14Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Nguyen Thai Ngoc Duy wrote:\n\n> On Mon, Aug 17, 2009 at 5:36 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n>\n> > In order to advocate my earlier proposal: Name the file \n> > .git/info/phantoms, then it's clear: \"The files mentioned here are \n> > phantoms\" - they exist in the index, but not in the worktree; no \n> > phantoms means that everything is checked out.\n> \n> OK. Phantom checkout, must be unique in VCS world ;-) If no one objects \n> my next series will use this name as it's better than \"sparse\" and \n> \"assume-unchanged\" is just too vague. Would option names to \n> enable/disable this be --with[out]-phantoms?\n\nThe term 'phantom' is not specified at all.  At least interested people on \nthe mailing list know 'sparse'.  But I agree that the naming is a major \nproblem, hence my earlier (unanswered) call.\n\nHowever, I would find specifying what you do _not_ want in that file \nrather unintuitive, in the same leage as receive.denyNonFastForwards = no.\n\nIf I want to have a sparse checkout, I know which files I _want_.\n\nCiao,\nDscho\n"},{"id":"120881","messageId":"eaa105840908170552m3eaf0f92j523ddad98dd67a3@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171425410.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Peter Harris","fromEmail":"git@peter.is-a-geek.org","sentAt":"2009-08-17T12:52:26Z","receivedAt":"2009-08-17T12:52:26Z","isPatch":false,"sender":{"key":"git@peter.is-a-geek.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 8:29 AM, Johannes Schindelin wrote:\n> If I want to have a sparse checkout, I know which files I _want_.\n\nThat's funny. I have a git tree that would benefit from sparse\ncheckout. I know which path I _don't_ want. Specifying all the paths I\nwant would be a rather longer (and more error-prone) list. I suspect\nit would be best to support both.\n\nDoes sparse use the same parser as .gitignore? (I guess not, if it\nhandles trailing slashes differently?) If so, it would be trivial to\nturn \"exclude path\" into \"exclude all but path\" (or vice-versa) with:\n\n*\n!path\n\nPeter Harris\n"},{"id":"120882","messageId":"fcaeb9bf0908170553k7008d7a0u1f5955f227a991df@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171425410.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2009-08-17T12:53:49Z","receivedAt":"2009-08-17T12:53:49Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Mon, Aug 17, 2009 at 7:29 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, Nguyen Thai Ngoc Duy wrote:\n>\n>> On Mon, Aug 17, 2009 at 5:36 PM, Johannes Sixt<j.sixt@viscovery.net> wrote:\n>>\n>> > In order to advocate my earlier proposal: Name the file\n>> > .git/info/phantoms, then it's clear: \"The files mentioned here are\n>> > phantoms\" - they exist in the index, but not in the worktree; no\n>> > phantoms means that everything is checked out.\n>>\n>> OK. Phantom checkout, must be unique in VCS world ;-) If no one objects\n>> my next series will use this name as it's better than \"sparse\" and\n>> \"assume-unchanged\" is just too vague. Would option names to\n>> enable/disable this be --with[out]-phantoms?\n>\n> The term 'phantom' is not specified at all.  At least interested people on\n> the mailing list know 'sparse'.  But I agree that the naming is a major\n> problem, hence my earlier (unanswered) call.\n>\n> However, I would find specifying what you do _not_ want in that file\n> rather unintuitive, in the same leage as receive.denyNonFastForwards = no.\n\nBut .gitignore is because I do _not_ want some files. Hey, how about\nworktree-ignore? Turning it to positive matching instead of excluding\nis not hard, but I have a feeling that people (OK, I) usually want to\nignore some directories. Applying trick:\n\n*\n!foo/\n!bar/\n\nto have foo and bar ignored too often would not be fun.\n-- \nDuy\n"},{"id":"120885","messageId":"alpine.DEB.1.00.0908171522510.4991@intel-tinevez-2-302","threadId":"20623","inReplyTo":"eaa105840908170552m3eaf0f92j523ddad98dd67a3@mail.gmail.com","subject":"Re: sparse support in pu","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T13:23:32Z","receivedAt":"2009-08-17T13:23:32Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Peter Harris wrote:\n\n> On Mon, Aug 17, 2009 at 8:29 AM, Johannes Schindelin wrote:\n> > If I want to have a sparse checkout, I know which files I _want_.\n> \n> That's funny. I have a git tree that would benefit from sparse checkout. \n> I know which path I _don't_ want. Specifying all the paths I want would \n> be a rather longer (and more error-prone) list. I suspect it would be \n> best to support both.\n\nYes, I agree, but the common case is for people to know what they are \nworking on, right?\n\n> Does sparse use the same parser as .gitignore? (I guess not, if it\n> handles trailing slashes differently?) If so, it would be trivial to\n> turn \"exclude path\" into \"exclude all but path\" (or vice-versa) with:\n> \n> *\n> !path\n\nThat was the idea behind my suggestion to allow .gitignore syntax.  And \nindeed, that is what happened.\n\nCiao,\nDscho\n"},{"id":"120893","messageId":"eaa105840908170730w248d966an5714365a40d039b9@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171522510.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Peter Harris","fromEmail":"git@peter.is-a-geek.org","sentAt":"2009-08-17T14:30:29Z","receivedAt":"2009-08-17T14:30:29Z","isPatch":false,"sender":{"key":"git@peter.is-a-geek.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 9:23 AM, Johannes Schindelin wrote:\n> On Mon, 17 Aug 2009, Peter Harris wrote:\n>> On Mon, Aug 17, 2009 at 8:29 AM, Johannes Schindelin wrote:\n>> > If I want to have a sparse checkout, I know which files I _want_.\n>>\n>> That's funny. I have a git tree that would benefit from sparse checkout.\n>> I know which path I _don't_ want. Specifying all the paths I want would\n>> be a rather longer (and more error-prone) list. I suspect it would be\n>> best to support both.\n>\n> Yes, I agree, but the common case is for people to know what they are\n> working on, right?\n\nI would presume so, but anecdotal \"evidence\" points the other way. I\ndon't have a statistically significant number of samples. Maybe it\nshould have been asked in the Git User's Survey? ;-)\n\n>> Does sparse use the same parser as .gitignore? (I guess not, if it\n>> handles trailing slashes differently?) If so, it would be trivial to\n>> turn \"exclude path\" into \"exclude all but path\" (or vice-versa) with:\n>>\n>> *\n>> !path\n>\n> That was the idea behind my suggestion to allow .gitignore syntax.  And\n> indeed, that is what happened.\n\nExcellent. In that case, I don't care which way around the default is.\n\nThanks,\n Peter Harris\n"},{"id":"120914","messageId":"7v7hx2xw6p.fsf@alter.siamese.dyndns.org","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171522510.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-17T16:05:34Z","receivedAt":"2009-08-17T16:05:34Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n>> That's funny. I have a git tree that would benefit from sparse checkout. \n>> I know which path I _don't_ want. Specifying all the paths I want would \n>> be a rather longer (and more error-prone) list. I suspect it would be \n>> best to support both.\n>\n> Yes, I agree, but the common case is for people to know what they are \n> working on, right?\n\nI either may be working on Documentation/ (I know I do not care about\neverthing else so I can afford to list Makefile and Documentation/ in the\n\"interesting\" list), or I either may be working on code (I do not know how\nmany code directories there are, and do not care to list them, but I know\nI do not need Documentation/ and contrib/).  You need both ways.\n\nAnd with .gitignore syntax you can have both.\n"},{"id":"120932","messageId":"885649360908170949j3b5dddffq2bb36620187c2bbb@mail.gmail.com","threadId":"20623","inReplyTo":"alpine.DEB.1.00.0908171425410.4991@intel-tinevez-2-302","subject":"Re: sparse support in pu","fromName":"James Pickens","fromEmail":"jepicken@gmail.com","sentAt":"2009-08-17T16:49:17Z","receivedAt":"2009-08-17T16:49:17Z","isPatch":false,"sender":{"key":"jepicken@gmail.com","avatar":null},"body":"On Mon, Aug 17, 2009, Johannes Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> The term 'phantom' is not specified at all.  At least interested people on\n> the mailing list know 'sparse'.  But I agree that the naming is a major\n> problem, hence my earlier (unanswered) call.\n\nI don't particularly like 'phantom' either, but I haven't come up with any\ngood alternatives.  'sparse' seems fine to me, though it might make sense\nto lengthen it to 'sparse-checkout'.\n\n> However, I would find specifying what you do _not_ want in that file\n> rather unintuitive, in the same leage as receive.denyNonFastForwards = no.\n>\n> If I want to have a sparse checkout, I know which files I _want_.\n\nI agree; specifying which files you don't want seems backwards to me.\n\nJames\n"},{"id":"120944","messageId":"alpine.DEB.1.00.0908171912250.4991@intel-tinevez-2-302","threadId":"20623","inReplyTo":"7v7hx2xw6p.fsf@alter.siamese.dyndns.org","subject":"Re: sparse support in pu","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T17:13:59Z","receivedAt":"2009-08-17T17:13:59Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n> \n> >> That's funny. I have a git tree that would benefit from sparse checkout. \n> >> I know which path I _don't_ want. Specifying all the paths I want would \n> >> be a rather longer (and more error-prone) list. I suspect it would be \n> >> best to support both.\n> >\n> > Yes, I agree, but the common case is for people to know what they are \n> > working on, right?\n> \n> I either may be working on Documentation/ (I know I do not care about \n> everthing else so I can afford to list Makefile and Documentation/ in \n> the \"interesting\" list), or I either may be working on code (I do not \n> know how many code directories there are, and do not care to list them, \n> but I know I do not need Documentation/ and contrib/).  You need both \n> ways.\n> \n> And with .gitignore syntax you can have both.\n\nI was fully aware of this.  It was the only reason I proposed the \n.gitignore syntax.\n\nMy point was that the direction should be dictated by convenience to those \nwho need the feature most.\n\nAnd maybe by asking yourself the question \"what would I understand by \n'sparse files'?\"\n\nCiao,\nDscho\n"}]}