{"thread":{"id":"30166","subject":"[GSoC] Git to SVN bridge","startedAt":"2012-04-06T16:07:07Z","lastAt":"2012-04-23T18:06:08Z","messageCount":6,"participants":["Ramkumar Ramachandra","Jonathan Nieder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"188661","messageId":"CALkWK0=Mqo=PMv7+_sr22Dnm6xxzxzaXL=Zh+2LsvT=usC7csw@mail.gmail.com","threadId":"30166","inReplyTo":null,"subject":"[GSoC] Git to SVN bridge","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2012-04-06T16:07:07Z","receivedAt":"2012-04-06T16:07:07Z","isPatch":false,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi,\n\nContinuing the git-remote-svn effort from two summers ago, I want to\ncomplete the Git -> SVN bridge.\n\nNote: This is intended to be a very short proposal because I'm already\na regular Git contributor, and I have an incomplete version of what I\nintend to build [0].  This is not a good example of a proposal that\nthe Git community expects from a new student.\n\n-- 8< --\n# The project\n\nThere's another prospective student handling the SVN -> Git side of\nthings.  I want to invest time in doing the reverse: Git -> SVN\nconversion.  There's unmerged code from back then [1] [2] to get\nthings started.  This plus svnrdump (a tool that I wrote merged into\nthe Subversion tree) can help complete the Git -> SVN bridge and the\nremote helper.\n\n# About me\n\nI was a Summer of Code student with Git the last two summers.  In\n2010, I worked on a remote helper for Subversion, and in 2011, I\nworked on building a sequencer.  Both of them are successful projects\nand code has been merged into upstream.\n\nPick me only if you're sure that I'm not getting in the way of other\nprospective student; I intend to work with Git this summer anyway, and\nI don't want the community to lose new students.\n\n[0]: https://github.com/artagnon/git/tree/svn-fi\n[1]: http://thread.gmane.org/gmane.comp.version-control.git/170290\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/170551\n"},{"id":"189655","messageId":"20120418201050.GB30625@burratino","threadId":"30166","inReplyTo":"CALkWK0=Mqo=PMv7+_sr22Dnm6xxzxzaXL=Zh+2LsvT=usC7csw@mail.gmail.com","subject":"Re: [GSoC] Git to SVN bridge","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-04-18T20:10:50Z","receivedAt":"2012-04-18T20:10:50Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi Ram,\n\nRamkumar Ramachandra wrote:\n\n> Note: This is intended to be a very short proposal because I'm already\n> a regular Git contributor, and I have an incomplete version of what I\n> intend to build [0].  This is not a good example of a proposal that\n> the Git community expects from a new student.\n\nYeah, seriously. :)\n\nFor what it's worth, if you'd like to propose a plan for getting push\nsupport in the svn remote helper to work (what the architecture would\nbe like, what milestones would be involved along the way, and so on),\nthen I would be happy to help flesh it out.  Even forgetting about the\nsummer of code and setting a good example, I imagine such design\ndocuments could be useful for developers and reviewers working on the\nproject to avoid getting lost.\n\nThanks,\nJonathan\n"},{"id":"189678","messageId":"CALkWK0=7SPR-4Km5TUwg+rHm30aC7Uru9GJkkfYnL3OORV7nfg@mail.gmail.com","threadId":"30166","inReplyTo":"20120418201050.GB30625@burratino","subject":"Re: [GSoC] Git to SVN bridge","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2012-04-19T03:55:21Z","receivedAt":"2012-04-19T03:55:21Z","isPatch":false,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi Jonathan,\n\nJonathan Nieder wrote:\n> For what it's worth, if you'd like to propose a plan for getting push\n> support in the svn remote helper to work (what the architecture would\n> be like, what milestones would be involved along the way, and so on),\n> then I would be happy to help flesh it out.  Even forgetting about the\n> summer of code and setting a good example, I imagine such design\n> documents could be useful for developers and reviewers working on the\n> project to avoid getting lost.\n\nSure.  Briefly:\nGive 'vcs-svn/' the ability to spit out a Subversion dumpfile.  If you\nremember, we hit a brick wall last time when we needed a way to\npersist mark-referenced-blobs in the fast-import stream.  Once we get\nsvn-fi (the reverse of svn-fe) merged, the next step is in getting a\nreverse-branch-mapper to work.  The mapper will have to sit between\nthe repository and svn-fi, because we can't really do much with the\nhistory on the svn end.\n\n    Ram\n"},{"id":"189730","messageId":"20120419225659.GA4971@burratino","threadId":"30166","inReplyTo":"CALkWK0=7SPR-4Km5TUwg+rHm30aC7Uru9GJkkfYnL3OORV7nfg@mail.gmail.com","subject":"Re: [GSoC] Git to SVN bridge","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-04-19T22:56:59Z","receivedAt":"2012-04-19T22:56:59Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ramkumar Ramachandra wrote:\n\n> Give 'vcs-svn/' the ability to spit out a Subversion dumpfile.  If you\n> remember, we hit a brick wall last time when we needed a way to\n> persist mark-referenced-blobs in the fast-import stream.\n\nYeah.  Ok, let's start there.\n\nIf I remember correctly, before we had this idea that svn-fi would be\na generic fast-import backend, so we could get support for pushing to\nSubversion from other version control systems like Mercurial and RCS\nfor free.  An earlier idea was to use a very minimal subset of the\nfast-import format.  You started with a patch that taught fast-export\na switch to produce that minimal subset, which was rejected because it\nseemed like too much of a niche use case to be worth the cost to\ncompatibility.\n\nHowever, that leaves whole swaths of the design space unexplored.  For\nexample, maybe \"git fast-export\" doesn't need to write the restricted\nformat but there would be a filter that takes an arbitrary fast-import\nstream and converts it to the restricted thing.  Or maybe it would be\neasiest to get something off the ground using that restricted\n\"fast-import lite\" format and only afterwards expand svn-fi to handle\nmore commands so it can talk to the rest of the world.\n\nIn other words, if you are hitting a wall with that part which doesn't\nseem to have much to do with differences between git and Subversion\nanyway, I imagine there are easier places to start.  Alternatively, if\nyou prefer to work on making it easy for an importer to handle \"ls\"\nand \"cat\" commands and mark references, I think our previous attempts\nwere misguided and we can do better. :)  What do you think?\n\nJonathan\n"},{"id":"189738","messageId":"CALkWK0mdzWQRY=fSmyML1p7352c7Lb3vuYoJd+TXSdTmFX1teg@mail.gmail.com","threadId":"30166","inReplyTo":"20120419225659.GA4971@burratino","subject":"Re: [GSoC] Git to SVN bridge","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2012-04-20T03:51:16Z","receivedAt":"2012-04-20T03:51:16Z","isPatch":false,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Jonathan Nieder wrote:\n> In other words, if you are hitting a wall with that part which doesn't\n> seem to have much to do with differences between git and Subversion\n> anyway, I imagine there are easier places to start.  Alternatively, if\n> you prefer to work on making it easy for an importer to handle \"ls\"\n> and \"cat\" commands and mark references, I think our previous attempts\n> were misguided and we can do better. :)  What do you think?\n\nYeah, I think the fast-export filter was a misguided attempt.  In\naddition to git-fast-export, we have to start up a fast-import process\nthat'll reply to our \"ls\" and \"cat\" commands, and I think we'll be\ngood.  I'm a little more worried about the mapper- I'm finding it hard\nto imagine a fast-import stream that contains subdirectories\n(branches/*) as opposed to head refs.  Any idea how we'll achieve\nthat?\n\n    Ram\n"},{"id":"189902","messageId":"20120423180607.GF9635@burratino","threadId":"30166","inReplyTo":"CALkWK0mdzWQRY=fSmyML1p7352c7Lb3vuYoJd+TXSdTmFX1teg@mail.gmail.com","subject":"Re: [GSoC] Git to SVN bridge","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-04-23T18:06:08Z","receivedAt":"2012-04-23T18:06:08Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ramkumar Ramachandra wrote:\n\n>        I'm a little more worried about the mapper- I'm finding it hard\n> to imagine a fast-import stream that contains subdirectories\n> (branches/*) as opposed to head refs.  Any idea how we'll achieve\n> that?\n\nShouldn't it be very simple?  All you need is a filter that understands\nthe fast-import syntax and can convert\n\n\tcommit refs/heads/topic\n\t...\n\tM 100644 inline \"foo/bar\"\n\nto\n\n\tcommit toplevel\n\t...\n\tM 100644 inline \"branches/topic/foo/bar\"\n\nand\n\n\tls topic@1 \"foo/bar\"\n\nto\n\n\tls r1 \"branches/topic/foo/bar\"\n"}]}