{"thread":{"id":"7392","subject":"Subproject status","startedAt":"2007-03-25T17:37:25Z","lastAt":"2007-03-27T00:04:59Z","messageCount":8,"participants":["Daniel Barkalow","Jakub Narebski","Han-Wen Nienhuys","Martin Waitz","David Lang"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"37939","messageId":"Pine.LNX.4.64.0703251304280.6485@iabervon.org","threadId":"7392","inReplyTo":null,"subject":"Subproject status","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2007-03-25T17:37:25Z","receivedAt":"2007-03-25T17:37:25Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"I remember that last time I checked, there were a number of designs for \nsubprojects and at least a couple of implementations, but none that was \ncomplete to the point of being mergeable. Are there any subproject \nimplementations available that haven't run into unsolveable problems? I'm \npresently only looking at stuff that totals to a reasonable single project \nsize and rate of growth, so I'm not worried about the large-scale storage \nrequirement issue.\n\n\t-Daniel\n*This .sig left intentionally blank*\n"},{"id":"37971","messageId":"eu70tc$38c$1@sea.gmane.org","threadId":"7392","inReplyTo":"Pine.LNX.4.64.0703251304280.6485@iabervon.org","subject":"Re: Subproject status","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-03-25T23:34:08Z","receivedAt":"2007-03-25T23:34:08Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"[Cc: Daniel Barkalow <barkalow@iabervon.org>, git@vger.kernel.org]\n\nDaniel Barkalow wrote:\n\n> I remember that last time I checked, there were a number of designs for \n> subprojects and at least a couple of implementations, but none that was \n> complete to the point of being mergeable. Are there any subproject \n> implementations available that haven't run into unsolveable problems? I'm \n> presently only looking at stuff that totals to a reasonable single project \n> size and rate of growth, so I'm not worried about the large-scale storage \n> requirement issue.\n\nCheck out http://git.or.cz/gitwiki/SubprojectSupport\n\n\nCould _please_ anyone who wrote some kind of submodule support, add info\nabout it (links to archive, to repository, perhaps to working prototype)\nto this page? Thanks in advance!\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"37985","messageId":"46072BDB.1010001@xs4all.nl","threadId":"7392","inReplyTo":"eu70tc$38c$1@sea.gmane.org","subject":"Re: Subproject status","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@xs4all.nl","sentAt":"2007-03-26T02:11:39Z","receivedAt":"2007-03-26T02:11:39Z","isPatch":false,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"Jakub Narebski wrote:\n> [Cc: Daniel Barkalow <barkalow@iabervon.org>, git@vger.kernel.org]\n> \n> Daniel Barkalow wrote:\n> \n>> I remember that last time I checked, there were a number of designs for \n>> subprojects and at least a couple of implementations, but none that was \n>> complete to the point of being mergeable. Are there any subproject \n>> implementations available that haven't run into unsolveable problems? I'm \n>> presently only looking at stuff that totals to a reasonable single project \n>> size and rate of growth, so I'm not worried about the large-scale storage \n>> requirement issue.\n> \n> Check out http://git.or.cz/gitwiki/SubprojectSupport\n\nthis points to\n\n  http://www.kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=Subpro.txt\n\nwhich is a broken. It results in\n\n\n\n1Reading blob failed.\n\n\nHan-Wen\n"},{"id":"37990","messageId":"46074D6D.1050301@xs4all.nl","threadId":"7392","inReplyTo":"eu70tc$38c$1@sea.gmane.org","subject":"Re: Subproject status","fromName":"Han-Wen Nienhuys","fromEmail":"hanwen@xs4all.nl","sentAt":"2007-03-26T04:34:53Z","receivedAt":"2007-03-26T04:34:53Z","isPatch":false,"sender":{"key":"hanwen@google.com","avatar":"https://avatars.githubusercontent.com/u/31547?v=4"},"body":"Jakub Narebski wrote:\n> [Cc: Daniel Barkalow <barkalow@iabervon.org>, git@vger.kernel.org]\n> \n> Daniel Barkalow wrote:\n> \n>> I remember that last time I checked, there were a number of designs for \n>> subprojects and at least a couple of implementations, but none that was \n>> complete to the point of being mergeable. Are there any subproject \n>> implementations available that haven't run into unsolveable problems? I'm \n>> presently only looking at stuff that totals to a reasonable single project \n>> size and rate of growth, so I'm not worried about the large-scale storage \n>> requirement issue.\n> \n> Check out http://git.or.cz/gitwiki/SubprojectSupport\n\nthis points to\n\n  http://www.kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=Subpro.txt\n\nwhich is a broken. It results in\n\n\n\n1Reading blob failed.\n\n\nHan-Wen\n"},{"id":"38014","messageId":"eu814c$im6$1@sea.gmane.org","threadId":"7392","inReplyTo":"46074D6D.1050301@xs4all.nl","subject":"Re: Subproject status","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-03-26T08:47:00Z","receivedAt":"2007-03-26T08:47:00Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Han-Wen Nienhuys wrote:\n\n> Jakub Narebski wrote:\n\n>> Check out http://git.or.cz/gitwiki/SubprojectSupport\n> \n> this points to\n> \n>   http://www.kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=Subpro.txt\n> \n> which is a broken. It results in\n> \n> \n> \n> 1Reading blob failed.\n\nThanks. Subpro.txt was removed from todo, as it described old, abandoned\nidea about subproject support (the \"mountpoint\" in commit object one).\n\nFixed (the link, not gitweb: I don't know where this '1' comes from).\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n"},{"id":"38017","messageId":"20070326093906.GF22773@admingilde.org","threadId":"7392","inReplyTo":"Pine.LNX.4.64.0703251304280.6485@iabervon.org","subject":"Re: Subproject status","fromName":"Martin Waitz","fromEmail":"tali@admingilde.org","sentAt":"2007-03-26T09:39:06Z","receivedAt":"2007-03-26T09:39:06Z","isPatch":false,"sender":{"key":"tali@admingilde.org","avatar":"https://gravatar.com/avatar/3f89b03eee362187effabe257898735b475673a12265c398ea9161259ae91553?d=mp&s=160"},"body":"hoi :)\n\nOn Sun, Mar 25, 2007 at 01:37:25PM -0400, Daniel Barkalow wrote:\n> I remember that last time I checked, there were a number of designs for \n> subprojects and at least a couple of implementations, but none that was \n> complete to the point of being mergeable. Are there any subproject \n> implementations available that haven't run into unsolveable problems? I'm \n> presently only looking at stuff that totals to a reasonable single project \n> size and rate of growth, so I'm not worried about the large-scale storage \n> requirement issue.\n\nYou can try to play with my prototype:\ngit.admingilde.org/tali/git.git, branch module2\n(to get an example of how to use it, look at the test script in\nt/t7500-submodule.sh).\n\nThe core operations should work, but not all the user interface is\nadapted to support submodules.  E.g. git-status will not show if a\nsubmodule has dirty changes, it will only show submodule changes which\nare already commited to the submodule but not yet to the supermodule.\nBut at least simple merges do work with submodules.\n\nI abondoned this branch (no further work, only occasionally pulling in\nupdates from upstream git.git) as it has scalability problems with\nlarge projects.\nAt the moment I'm working on the module3 branch, which tries to address\nthe scalability problem by separating the object store.  This is still\nin the phase of early prototyping, just to see if it can work.\nBut I am already at the point that I am confident to be able to finish\nit this way.\n\nThe objects created by the module2 and module3 branches are the same,\nmodule3 only moves those belonging to the submodule to another location.\nSo If you start using module2 branch now you should be able to upgrade\nlater.  But to be extra sure, we should have some discussion about the\nobject format here.  (There is nothing new here, really: Just one more\ntree entry file mode which says that this is not a file or directory\nentry, but a submodule, represented by one commit.)\n\n-- \nMartin Waitz\n"},{"id":"38095","messageId":"Pine.LNX.4.63.0703261541370.14387@qynat.qvtvafvgr.pbz","threadId":"7392","inReplyTo":"Pine.LNX.4.64.0703261920070.6485@iabervon.org","subject":"Re: Subproject status","fromName":"David Lang","fromEmail":"david.lang@digitalinsight.com","sentAt":"2007-03-26T23:46:58Z","receivedAt":"2007-03-26T23:46:58Z","isPatch":false,"sender":{"key":"david.lang@digitalinsight.com","avatar":null},"body":"On Mon, 26 Mar 2007, Daniel Barkalow wrote:\n\n>\n> So, I had the nutty idea that it would be convenient if I could make\n> different files in a single directory come from different projects. But I\n> can't think of a sane user interface, so I think that this isn't\n> practical from that direction, so it's probably not worth worrying about\n> from the data structure end, either. (Answer for the usecase:\n> \"ln -s make/Makefile Makefile; git add Makefile\", and mock systems that\n> don't handle symlinks).\n>\n\nthis would definantly be useful (managing files in /etc or /home are easy \nexamples\n\nfor this sort of thing doing 'git add file -index project' would be a fair \nfirst-cut at a UI. later on how about creating a dummy .git directory that would \nrecord 'file X is part of project Y' so that you could get away with only \nspecifying it once, and then either have a default, or have git add complain if \nthere are multiple places to put things and you don't specify which one (and if \nyou add fules to multiple projects at the same time then you could either prompt \nfor additional checkin comments as needed, or use the same comment for all \nprojects)\n\nDavid Lang\n"},{"id":"38092","messageId":"Pine.LNX.4.64.0703261920070.6485@iabervon.org","threadId":"7392","inReplyTo":"20070326093906.GF22773@admingilde.org","subject":"Re: Subproject status","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2007-03-27T00:04:59Z","receivedAt":"2007-03-27T00:04:59Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Mon, 26 Mar 2007, Martin Waitz wrote:\n\n> You can try to play with my prototype:\n> git.admingilde.org/tali/git.git, branch module2\n> (to get an example of how to use it, look at the test script in\n> t/t7500-submodule.sh).\n\nI tried that yesterday, but I fail reading comprehension; I lost the \n\"module2\" bit by the time I actually fetched. I'll look into this.\n\n> The core operations should work, but not all the user interface is\n> adapted to support submodules.  E.g. git-status will not show if a\n> submodule has dirty changes, it will only show submodule changes which\n> are already commited to the submodule but not yet to the supermodule.\n> But at least simple merges do work with submodules.\n> \n> I abondoned this branch (no further work, only occasionally pulling in\n> updates from upstream git.git) as it has scalability problems with\n> large projects.\n\nThat's what I remember. But it's only an issue with super-scale projects \n(i.e., where your subprojects are full-sized projects in their own right, \nand you've got a hundred of them), right? I'm working on the other end \n(factoring out the common bit from a bunch of similar small projects), so \nI should be fine with respect to scalability of the implementation.\n\nWould you guess that a patch series to complete the module2 user interface \nadaptation would also apply to module3 and therefore be useful in the \nfuture?\n\n> The objects created by the module2 and module3 branches are the same,\n> module3 only moves those belonging to the submodule to another location.\n> So If you start using module2 branch now you should be able to upgrade\n> later.  But to be extra sure, we should have some discussion about the\n> object format here.  (There is nothing new here, really: Just one more\n> tree entry file mode which says that this is not a file or directory\n> entry, but a submodule, represented by one commit.)\n\nSo, I had the nutty idea that it would be convenient if I could make \ndifferent files in a single directory come from different projects. But I \ncan't think of a sane user interface, so I think that this isn't \npractical from that direction, so it's probably not worth worrying about \nfrom the data structure end, either. (Answer for the usecase: \n\"ln -s make/Makefile Makefile; git add Makefile\", and mock systems that \ndon't handle symlinks).\n\nBut, just to be clear, the semantics of having a commit abcd at a path foo \nare, with respect to the tree this represents, that abcd:* appears at \nfoo/*. Right?\n\nAre there any standards we should discuss with respect to refs related to \nsubprojects?\n\nI've updated the wiki page with this information.\n\n\t-Daniel\n*This .sig left intentionally blank*\n"}]}