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
-~----------~----~----~----~------~----~------~--~---

Reply via email to