Hi all, I strongly believe that now may be the time to start encouraging the use of a distributed version control system for MPIR development. I have thought very, very carefully about this issue for a very long time.....
I have finally convinced myself that the *only* system which is capable of doing everything we want is Git. I formerly opposed using Git for three main reasons - lack of decent Windows support steep learning curve and very bad documentation. However, after revisiting these issues, I see they have basically all been dealt with by Git developers. Let me say right from the outset that the central repository will still be maintained with subversion. What this will mean in practice is that the main releases of MPIR will be available from the subversion repo just as they always have been. Also, the core devs will still be the only people with commit access to this repo. But this "version" of MPIR will only be the one which is released on the MPIR website. With Git, there is nothing stopping you having your very own "version" of MPIR! By the way, it is quite common for people to use Git with a centralised repo managed by svn. It maybe not what Linus Torvalds intended when he added such good svn support, but who cares. If you wish to develop for MPIR, wish start your own branch to try something out, or even fork MPIR if you want to, Git makes this very easy. There are ways to make HG do the same as what I will describe below for Git, but svn linkage is a standard part of Git, a major factor in the final choice. Note Git is now available for 32 and 64 bit Windows and numerous other systems, including linux of course. Basically Git can be used on your local machine to produce a whole pile of MPIR patches and then once you submit them to be included in a release, we can trivially pull them into the svn repo, and no one would even know you had not used svn! That's great, because the devs who want to keep using svn can do so, and absolutely nothing will change for them. As far as they are concerned, you may as well have committed your patches using svn, directly to the central repo. Not only that, but you can pull patches from other devs writing for MPIR, who are using Git, without having to wait for an official release. You can even make or use a set of patches which don't ever make it into an official release, and even distribute them to others. If we decide we want them, and you are making them available somewhere, we can just pull them and away we go! The main reason to want to do all this, is to avoid having to make branches in the central repo. With Git, you can make branches trivially on your local machine and even do your development with a group of other developers, making lots of commits to your branch, and no one will even know about it. Only when you are ready do you announce your new branch to the MPIR team will we pull it from you and give it a whirl. Then it'll basically be ready to go, and we just issue a release with your new changes and any others we like. There are lots of other nice things too, but it's best that I get down to nuts and bolts here and leave all the nice features of Git for individual developers to discover. I'm going to, right now, go through the process, from scratch, of getting Git for my machine, which happens to be a Windows Vista machine, getting the MPIR repo, making some commits locally and then making some patches. I'll also describe how to rebase against the svn version, which you'll want to do every now and again when important commits get made to the central repo or when a release is issued for example. Warning: though the initial setup takes very little user intervention, the check out process takes a few hours. This is very necessary, so Git can create a proper local repository for you. However, once you set it going, you can just leave it go and it'll happily sort it all out for you. You only need to do it once, EVER! Step 1: Install MSysGit. This is command line Git for Windows. It can be obtained from the main Git website: http://git-scm.com/download (If you had some other kind of system, such as linux, you'd get the appropriate package for that system.) For me the install Just Worked. I selected the "Run Git from the Windows command prompt" option during install. For all other options I selected the default options. Actually command line Git is ready to use at this point, but we'll go a little further to make things easier. Step 2: Install TortoiseGit. I have a 32 bit Windows Vista, so I get the latest 32 bit version here: http://code.google.com/p/tortoisegit/downloads/list I select the OpenSSH option when installing, otherwise all default options. Again the installer Just Works, though a restart is required. Step 3: Get the MPIR trunk from svn. In a folder I created, I right clicked and selected Git Clone. In the dialog which pops up I enter the MPIR repo address: http://modular.math.jmu.edu/svn/mpir/mpir/ I select the "From svn repository" and "Trunk" radio buttons. Git now does a *lot* of very clever work and creates a local Git repo of MPIR trunk on my local machine. This step takes Git a *very long* time, but it never has to do it again. Get a coffee or have a sleep or whatever. Another option, which will be faster, is to clone someone else's git repository, though if you want to keep up with the central svn repo, you will have to wait for them to rebase before you can get the updates from them every time. That won't be a problem if you are working with a group of people on MPIR, as only one of you will need to stay up to date with the svn repo and the rest can just rip from them. Otherwise you will have to wait, just this once, for Git to get all the (thousands of) recent revisions from the central svn repo. More to come when *my* machine finishes building my local git repo..... Bill. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en -~----------~----~----~----~------~----~------~--~---
