{"thread":{"id":"32383","subject":"Opera release Git-splitter, a sub-modularizing tool for Git","startedAt":"2012-12-18T14:51:14Z","lastAt":"2012-12-22T16:41:27Z","messageCount":8,"participants":["Yngve N. Pettersen (Developer Opera Software ASA)","Michael J Gruber","Yngve Nysaeter Pettersen","Matthieu Moy"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"205120","messageId":"op.wpiovoj5qrq7tp@acorna.invalid.invalid","threadId":"32383","inReplyTo":null,"subject":"Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Yngve N. Pettersen (Developer Opera Software ASA)","fromEmail":"yngve@opera.com","sentAt":"2012-12-18T14:51:14Z","receivedAt":"2012-12-18T14:51:14Z","isPatch":false,"sender":{"key":"yngve@opera.com","avatar":null},"body":"Hello all,\n\nToday Opera Software released the \"Git-splitter\", a small tool for  \nsub-modularizing code in a git repo, with complete commit history, under  \nthe Apache 2.0 license.\n\nIt's functionality is similar to \"git-subtree\", but also include a command  \nfor reversing the process.\n\nThe code is hosted on GitHub:  \n<https://github.com/operasoftware/git-splitter>\n\nWe have announced the release as part of another announcement of released  \ncode at the Opera Security Group home page:  \n<http://my.opera.com/securitygroup/blog/2012/12/18/tls-prober-source-released-under-apache-2-0-license>\n\n-- \nSincerely,\nYngve N. Pettersen\n********************************************************************\nSenior Developer\t\t     Email: yngve@opera.com\nOpera Software ASA                   http://www.opera.com/\nPhone:  +47 96 90 41 51              Fax:    +47 23 69 24 01\n********************************************************************\n"},{"id":"205328","messageId":"50D454D2.5030403@drmicha.warpmail.net","threadId":"32383","inReplyTo":"op.wpiovoj5qrq7tp@acorna.invalid.invalid","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2012-12-21T12:23:46Z","receivedAt":"2012-12-21T12:23:46Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Yngve N. Pettersen (Developer Opera Software ASA) venit, vidit, dixit\n18.12.2012 15:51:\n> Hello all,\n> \n> Today Opera Software released the \"Git-splitter\", a small tool for  \n> sub-modularizing code in a git repo, with complete commit history, under  \n> the Apache 2.0 license.\n> \n> It's functionality is similar to \"git-subtree\", but also include a command  \n> for reversing the process.\n\nIs there something keeping you technically from adding a join command to\ngit-subtree?\n\n> The code is hosted on GitHub:  \n> <https://github.com/operasoftware/git-splitter>\n> \n> We have announced the release as part of another announcement of released  \n> code at the Opera Security Group home page:  \n> <http://my.opera.com/securitygroup/blog/2012/12/18/tls-prober-source-released-under-apache-2-0-license>\n> \n"},{"id":"205330","messageId":"op.wpn2xz07vqd7e2@damia.oslo.osa","threadId":"32383","inReplyTo":"50D454D2.5030403@drmicha.warpmail.net","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Yngve Nysaeter Pettersen","fromEmail":"yngve@opera.com","sentAt":"2012-12-21T12:43:01Z","receivedAt":"2012-12-21T12:43:01Z","isPatch":false,"sender":{"key":"yngve@opera.com","avatar":null},"body":"Hi,\n\nOn Fri, 21 Dec 2012 13:23:46 +0100, Michael J Gruber\n<git@drmicha.warpmail.net> wrote:\n\n> Yngve N. Pettersen (Developer Opera Software ASA) venit, vidit, dixit\n> 18.12.2012 15:51:\n>> Hello all,\n>>\n>> Today Opera Software released the \"Git-splitter\", a small tool for\n>> sub-modularizing code in a git repo, with complete commit history, under\n>> the Apache 2.0 license.\n>>\n>> It's functionality is similar to \"git-subtree\", but also include a  \n>> command\n>> for reversing the process.\n>\n> Is there something keeping you technically from adding a join command to\n> git-subtree?\n\nProbably not, but within the process I was working I did not want to merge\nthe branch with the recreated history for that path into the existing\ncodebase (I don't like duplicate histories) so I used rebasing to move the\nnew commits over, instead, and therefore did not need a join command.\n\nFeel free to add a join command, if you want one.\n\n>> The code is hosted on GitHub:\n>> <https://github.com/operasoftware/git-splitter>\n>>\n>> We have announced the release as part of another announcement of  \n>> released\n>> code at the Opera Security Group home page:\n>> <http://my.opera.com/securitygroup/blog/2012/12/18/tls-prober-source-released-under-apache-2-0-license>\n>>\n\n\n-- \nSincerely,\nYngve N. Pettersen\n********************************************************************\nSenior Developer\t\t     Email: yngve@opera.com\nOpera Software ASA                   http://www.opera.com/\nPhone:  +47 96 90 41 51              Fax:    +47 23 69 24 01\n********************************************************************\n"},{"id":"205332","messageId":"50D468E6.2090900@drmicha.warpmail.net","threadId":"32383","inReplyTo":"op.wpn2xz07vqd7e2@damia.oslo.osa","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2012-12-21T13:49:26Z","receivedAt":"2012-12-21T13:49:26Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Yngve Nysaeter Pettersen venit, vidit, dixit 21.12.2012 13:43:\n> Hi,\n> \n> On Fri, 21 Dec 2012 13:23:46 +0100, Michael J Gruber\n> <git@drmicha.warpmail.net> wrote:\n> \n>> Yngve N. Pettersen (Developer Opera Software ASA) venit, vidit, dixit\n>> 18.12.2012 15:51:\n>>> Hello all,\n>>>\n>>> Today Opera Software released the \"Git-splitter\", a small tool for\n>>> sub-modularizing code in a git repo, with complete commit history, under\n>>> the Apache 2.0 license.\n>>>\n>>> It's functionality is similar to \"git-subtree\", but also include a  \n>>> command\n>>> for reversing the process.\n>>\n>> Is there something keeping you technically from adding a join command to\n>> git-subtree?\n> \n> Probably not, but within the process I was working I did not want to merge\n> the branch with the recreated history for that path into the existing\n> codebase (I don't like duplicate histories) so I used rebasing to move the\n> new commits over, instead, and therefore did not need a join command.\n> \n> Feel free to add a join command, if you want one.\n\nIm sorry, but that was a total misunderstanding. You said git-splitter\nis like git-subtree but adds a command for reversing the process. My\nquestion was: What kept you from adding that to git-subtree (rather than\nredoing stiff that git-subtree does)?\n\nI just assumed that reversing the process of splitting must be joining.\n\nIt may very well be that git-splitter does things differently, i.e. that\nthere are more differences than just added functionality (compared to\ngit-subtree), but that is not clear from the announcement.\n\n>>> The code is hosted on GitHub:\n>>> <https://github.com/operasoftware/git-splitter>\n>>>\n>>> We have announced the release as part of another announcement of  \n>>> released\n>>> code at the Opera Security Group home page:\n>>> <http://my.opera.com/securitygroup/blog/2012/12/18/tls-prober-source-released-under-apache-2-0-license>\n>>>\n> \n> \n"},{"id":"205336","messageId":"op.wpn9d6xuvqd7e2@damia.oslo.osa","threadId":"32383","inReplyTo":"50D468E6.2090900@drmicha.warpmail.net","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Yngve Nysaeter Pettersen","fromEmail":"yngve@opera.com","sentAt":"2012-12-21T15:02:20Z","receivedAt":"2012-12-21T15:02:20Z","isPatch":false,"sender":{"key":"yngve@opera.com","avatar":null},"body":"On Fri, 21 Dec 2012 14:49:26 +0100, Michael J Gruber  \n<git@drmicha.warpmail.net> wrote:\n\n> Yngve Nysaeter Pettersen venit, vidit, dixit 21.12.2012 13:43:\n>> Hi,\n>>\n>> On Fri, 21 Dec 2012 13:23:46 +0100, Michael J Gruber\n>> <git@drmicha.warpmail.net> wrote:\n>>\n>>> Yngve N. Pettersen (Developer Opera Software ASA) venit, vidit, dixit\n>>> 18.12.2012 15:51:\n>>>> Hello all,\n>>>>\n>>>> Today Opera Software released the \"Git-splitter\", a small tool for\n>>>> sub-modularizing code in a git repo, with complete commit history,  \n>>>> under\n>>>> the Apache 2.0 license.\n>>>>\n>>>> It's functionality is similar to \"git-subtree\", but also include a\n>>>> command\n>>>> for reversing the process.\n>>>\n>>> Is there something keeping you technically from adding a join command  \n>>> to\n>>> git-subtree?\n>>\n>> Probably not, but within the process I was working I did not want to  \n>> merge\n>> the branch with the recreated history for that path into the existing\n>> codebase (I don't like duplicate histories) so I used rebasing to move  \n>> the\n>> new commits over, instead, and therefore did not need a join command.\n>>\n>> Feel free to add a join command, if you want one.\n>\n> Im sorry, but that was a total misunderstanding. You said git-splitter\n> is like git-subtree but adds a command for reversing the process. My\n> question was: What kept you from adding that to git-subtree (rather than\n> redoing stiff that git-subtree does)?\n>\n> I just assumed that reversing the process of splitting must be joining.\n>\n> It may very well be that git-splitter does things differently, i.e. that\n> there are more differences than just added functionality (compared to\n> git-subtree), but that is not clear from the announcement.\n\n\nThe split command will create a new repository for all files foo in a  \nfolder (path/foo) and their commit history.\n\nThe replant command reverses that process, re-adding the path prefix for  \neach file. It may be possible to extend that process into one that  \nautomatically reintegrates the new commits in the original history, but I  \nnever had time to complete that work.\n\nI did originally add the \"replant\" functionality into my version of the  \ngit-subtree script, but given the number of commits in the original  \nrepository, git-subtree turned out to be inefficient, due to the use of  \ntemporary files (tens of thousands of files IIRC).\n\nThose problems led to my development of git-splitter in Python (bypassing  \nthe problem of temporary files), but just including the functionality I  \nneeded, join was not one of those functions.\n\n>>>> The code is hosted on GitHub:\n>>>> <https://github.com/operasoftware/git-splitter>\n>>>>\n>>>> We have announced the release as part of another announcement of\n>>>> released\n>>>> code at the Opera Security Group home page:\n>>>> <http://my.opera.com/securitygroup/blog/2012/12/18/tls-prober-source-released-under-apache-2-0-license>\n>>>>\n>>\n>>\n\n\n-- \nSincerely,\nYngve N. Pettersen\n********************************************************************\nSenior Developer\t\t     Email: yngve@opera.com\nOpera Software ASA                   http://www.opera.com/\nPhone:  +47 96 90 41 51              Fax:    +47 23 69 24 01\n********************************************************************\n"},{"id":"205339","messageId":"vpqhanf2yny.fsf@grenoble-inp.fr","threadId":"32383","inReplyTo":"op.wpn9d6xuvqd7e2@damia.oslo.osa","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2012-12-21T15:49:21Z","receivedAt":"2012-12-21T15:49:21Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"\"Yngve Nysaeter Pettersen\" <yngve@opera.com> writes:\n\n> The split command will create a new repository for all files foo in a\n> folder (path/foo) and their commit history.\n>\n> The replant command reverses that process, re-adding the path prefix\n> for each file. It may be possible to extend that process into one that\n> automatically reintegrates the new commits in the original history,\n> but I never had time to complete that work.\n>\n> I did originally add the \"replant\" functionality into my version of\n> the git-subtree script, but given the number of commits in the\n> original repository, git-subtree turned out to be inefficient, due to\n> the use of temporary files (tens of thousands of files IIRC).\n>\n> Those problems led to my development of git-splitter in Python\n> (bypassing the problem of temporary files), but just including the\n> functionality I needed, join was not one of those functions.\n\nThat still doesn't answer the question: why did you need to write a new\ntool instead of extending git-subtree?\n\nIf one doesn't use \"replant\", is your tool different from git-subtree?\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"205371","messageId":"op.wpontloxvqd7e2@damia.oslo.osa","threadId":"32383","inReplyTo":"vpqhanf2yny.fsf@grenoble-inp.fr","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Yngve Nysaeter Pettersen","fromEmail":"yngve@opera.com","sentAt":"2012-12-21T20:13:59Z","receivedAt":"2012-12-21T20:13:59Z","isPatch":false,"sender":{"key":"yngve@opera.com","avatar":null},"body":"On Fri, 21 Dec 2012 16:49:21 +0100, Matthieu Moy  \n<Matthieu.Moy@grenoble-inp.fr> wrote:\n\n> \"Yngve Nysaeter Pettersen\" <yngve@opera.com> writes:\n>\n>> The split command will create a new repository for all files foo in a\n>> folder (path/foo) and their commit history.\n>>\n>> The replant command reverses that process, re-adding the path prefix\n>> for each file. It may be possible to extend that process into one that\n>> automatically reintegrates the new commits in the original history,\n>> but I never had time to complete that work.\n>>\n>> I did originally add the \"replant\" functionality into my version of\n>> the git-subtree script, but given the number of commits in the\n>> original repository, git-subtree turned out to be inefficient, due to\n>> the use of temporary files (tens of thousands of files IIRC).\n>>\n>> Those problems led to my development of git-splitter in Python\n>> (bypassing the problem of temporary files), but just including the\n>> functionality I needed, join was not one of those functions.\n>\n> That still doesn't answer the question: why did you need to write a new\n> tool instead of extending git-subtree?\n\nThe primary problem with git-subtree was that I ended up with a temporary  \nfile directory containing 100+K files, which I tracked back to being used  \nto manage the commit-to-tree mapping. On Windows, at least, that literally  \nslowed down the process to a crawl.\n\n> If one doesn't use \"replant\", is your tool different from git-subtree?\n\nNo, it is not different. However, my tool will use RAM, not diskspace to  \nmanage information.\n\n\n-- \nSincerely,\nYngve N. Pettersen\n********************************************************************\nSenior Developer\t\t     Email: yngve@opera.com\nOpera Software ASA                   http://www.opera.com/\nPhone:  +47 96 90 41 51              Fax:    +47 23 69 24 01\n********************************************************************\n"},{"id":"205419","messageId":"50D5E2B7.5010303@drmicha.warpmail.net","threadId":"32383","inReplyTo":"op.wpontloxvqd7e2@damia.oslo.osa","subject":"Re: Opera release Git-splitter, a sub-modularizing tool for Git","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2012-12-22T16:41:27Z","receivedAt":"2012-12-22T16:41:27Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Yngve Nysaeter Pettersen venit, vidit, dixit 21.12.2012 21:13:\n> On Fri, 21 Dec 2012 16:49:21 +0100, Matthieu Moy  \n> <Matthieu.Moy@grenoble-inp.fr> wrote:\n> \n>> \"Yngve Nysaeter Pettersen\" <yngve@opera.com> writes:\n>>\n>>> The split command will create a new repository for all files foo in a\n>>> folder (path/foo) and their commit history.\n>>>\n>>> The replant command reverses that process, re-adding the path prefix\n>>> for each file. It may be possible to extend that process into one that\n>>> automatically reintegrates the new commits in the original history,\n>>> but I never had time to complete that work.\n>>>\n>>> I did originally add the \"replant\" functionality into my version of\n>>> the git-subtree script, but given the number of commits in the\n>>> original repository, git-subtree turned out to be inefficient, due to\n>>> the use of temporary files (tens of thousands of files IIRC).\n>>>\n>>> Those problems led to my development of git-splitter in Python\n>>> (bypassing the problem of temporary files), but just including the\n>>> functionality I needed, join was not one of those functions.\n>>\n>> That still doesn't answer the question: why did you need to write a new\n>> tool instead of extending git-subtree?\n> \n> The primary problem with git-subtree was that I ended up with a temporary  \n> file directory containing 100+K files, which I tracked back to being used  \n> to manage the commit-to-tree mapping. On Windows, at least, that literally  \n> slowed down the process to a crawl.\n> \n>> If one doesn't use \"replant\", is your tool different from git-subtree?\n> \n> No, it is not different. However, my tool will use RAM, not diskspace to  \n> manage information.\n\nThat is some valuable input. It can help improve git-subtree for Windows\nusers, or replace it by something else.\n\nMichael\n"}]}