Are there git mirrors of the CVS source repositories?
Pete Moore (2829) 7 posts |
It would be great to have the source code hosted in git, and may help stimulate contribution to the project, due to the ease and standardised ways of collaborating on open source projects via github. If there is interest, but help is required to perform a conversion, I may be able to help out. Thanks, |
Steffen Huber (91) 1945 posts |
It would be interesting to see how Git performs with a repository like the RISC OS one which has such a long history. When we migrated to Git from CVS at work, performance was lousy and the Git blob was several GBs big. When trying to get a history on a single file, you wait several minutes if it is a file with a long history. We ended up splitting the project into many repos. Which introduces new interesting problems if the repos do not represent independent modules. In my opinion, if you don’t need the feature “cheap, local branching”, don’t have a decentralized development model, and can live with CVSes lack of rename support (but keep in mind that Git rename also has “interesting” properties), do not switch to Git. |
Jeffrey Lee (213) 6046 posts |
I believe the story is that ROOL have tried to migrate to Git in the past (along with trying other source control systems, e.g. SVN) but have always had trouble finding a migration tool which is able to make sense of the way that tags, branches, checkin comments, etc. are used. If you think you’re up to the challenge of working out how to migrate the repository then it’s probably worth contacting ROOL directly to find out what the specific problems were that they had in the past and what they’d want the final git repository to look like (they rarely have time to keep track of forum threads). Actually, looking at the last few pages of a forum search for ‘git’ turns up a couple of interesting posts by ROOL members: |
Rick Murray (539) 13385 posts |
GIT – oh, that’s the one with the long blog articles that talk about the easy ways to trash your repo and end up with the advice “delete it and start again”. |
Philip J Ludlam (50) 21 posts |
Yes – this: http://xkcd.com/1597/ – says it all :) |
Steffen Huber (91) 1945 posts |
Actually, one thing that a migration to Git is good for is that the migration tool (we used cvs2git, which basically does cvs2svn and then svn2git) is able to uncover inconsistencies of your CVS repo. Which are really easy to get, like e.g. moving branch tags around. So run the migration tool, fix the errors and stay with CVS :-) |
David Boddie (1934) 222 posts |
It’s also possible to attempt a migration to Mercurial depending on what you want to keep. Running hg convert also tends to drop in additional commits for housekeeping purposes but perhaps these could be stripped away later. |
Pete Moore (2829) 7 posts |
Hi guys, Many thanks for your feedback. I’m now curious to try out the conversion, and see how well it performs. I’ll take a stab at it in the coming days, and publish something to my github repository. We can then see how it performs. I obviously don’t want to come in and suggest people change their working practices overnight, so I’m not suggesting that there is an overhaul! Instead I think it would be a useful exercise, people interested can take a look, people can fork the repository and play with it themselves if they wish, and then it will be easier to have a discussion about relative merits/disadvantages once there is a working prototype to play with. Maybe we throw it away afterwards, but it will be easier to rationalise about once we have it. =) Also I’d be interested to take a look at getting git running on RISC OS too. I’ll have a play with that too. I’m really happy to see the source code has been opened up – I grew up with Acorn Archimedes and RISC PC, and always was a huge admirer. I was delighted to discover riscosopen. Pete |
Theo Markettos (89) 919 posts |
There’s a git port I made in the GCCSDK autobuilder. I’ve just given it a kick to bring it up to the latest sources (2.6.2) and you can download the most recent build. Note that the build has a warning: WARNING: **** AUTOBUILDER WARNING * and also that the ‘git’ frontend doesn’t work, so you have to call ‘git-clone’ rather than ‘git clone’, etc. I’ve never really had enough time to test it properly, so debugging help would be appreciated. The !Help has a bit more info. It is currently being statically linked so it’s a bit of a large download, but that can easily be fixed later. As for git-ifying the RISC OS source tree, I’ve had a go. I think the main complication is that CVS (and SVN) are versioned filesystems, where you can apply different properties to different parts of the tree. That means you can tag fragments of a CVS repo, rather than the whole. git sees the whole repository as one unit, where all operations work on the whole of the tree – there’s no such thing as a partial checkout or a partial tag. So what I’d suggest is: don’t apply cvs2git on the whole tree, because that will try to make all those local changes global and end up with a horrible mess. Instead, RISC OS is modular. So each component may be regarded as a separate git repository. Effectively this is what the builder scripts do when they want to checkout FileCore v1.23 – they only deal with the sources/FileSys/FileCore part of the CVS tree as if it was a separate repo with its own tags. If each RISC OS module is a separate git module, you can then combine them with git submodules if you want the whole tree, but you don’t have to. However fragmenting the global repo into module repos will disconnect single events that affect multiple modules (eg ‘checked in everything from RISC OS 3.6 CD’, or reorganisations), so it isn’t a perfect fit. It could still be useful for the future if modules stay as discrete modules (since it’s easy to bridge cvs and git here), but there remains a disconnect if there need to be any cross-repo events in the future. |
Ralph Corderoy (1346) 1 post |
I land here whilst looking for a browsable repo to pass on links to particular files. WRT conversion to git, Eric S. Raymond’s reposurgeon may be of interest. “A major use of reposurgeon is to assist a human operator to perform higher-quality conversions among version control systems than can be achieved with fully automated converters.” http://www.catb.org/esr/reposurgeon/reposurgeon.html It lets one script the conversion, poke about the result, edit the script, repeat. He’s responsive to situations it can’t handle. |