[repository] Make LLVM repository Git-clonable

Hi,

As a Linux package maintainer I tend to follow LLVM mostly towards the
end of each release cycle; nevertheless, I sometimes need to keep
track of multiple LLVM branches at the same time.

It would be great if I could use Git's SVN to clone the repository
once, and then have the full version history available locally in a
compact format. As a bonus, this will reduce the load on the server
too.

There are LLVM Git mirrors (there's one on GitHub, and I used to have
a personal clone too) but they all track only the trunk directory, for
the following reason:

git svn clone --no-minimize-url -s http://llvm.org/svn/llvm-project/llvm llvm

Initialized empty Git repository in /home/inf2/i2staff/salim/checkout/llvm/.git/
RA layer request failed: Server sent unexpected return value (403
Forbidden) in response to REPORT request for
'/svn/llvm-project/!svn/vcc/default' at /usr/lib/git/git-svn line 5047

Any idea if this could be rectified?

Thanks,

The Git mirror I maintain at http://github.com/earl/llvm-mirror has
releases branches (and tags), currently going back to the 2.0 release.
Once 2.7 is released, I'll add the according branch and tag.

Hi Andreas,

There are LLVM Git mirrors (there's one on GitHub, and I used to have
a personal clone too) but they all track only the trunk directory

The Git mirror I maintain at http://github.com/earl/llvm-mirror has
releases branches (and tags), currently going back to the 2.0 release.
Once 2.7 is released, I'll add the according branch and tag.

Aha, thanks! 2.7 has been branched in SVN, though, so I'm guessing at
the moment SVN trunk (and your master branch) is not what will end up
as LLVM 2.7 ?

Do you need SVN commit access to be able to make the Git mirror, or is
a purely read-only access sufficient? I'd appreciate it if you could
demonstrate how it's done.

Thanks,

Several months ago it was determined that people scraping SVN history
into their DVCS clones were hosing the server, so some attempt was
made to forbid that, which I think you are running into.

Reid

A good solution, surely, would be to anoint a single official
Git/Mercurial mirror, and announce it in the same page as the SVN
checkout instructions?

Thanks,

A good solution, surely, would be to anoint a single official
Git/Mercurial mirror, and announce it in the same page as the SVN
checkout instructions?

MRI Ruby interpreter development did that and it seems to working fine. Of interest is their handling of branches and tags as discussed by Vladimir and Eric in this post:

http://groups.google.com/group/ruby-core-google/browse_thread/thread/e58d31e49cd4153b/f1e3c020cdc815d6

Jon

FWIW, One aim of the new llvm.org server is for it to host an 'official' live git mirror.

-Chris

That'd be lovely, any estimate on when it will be done?

Will it include full history, and all branches/tags, and use svn
post-commit hook to update git repo?
Having at least trunk and the release branches would be great too.

(importing the full history can be done the fastest by running git-svn
locally on the llvm.org server, using file:// paths.)

Best regards,
--Edwin

Looking forward to this myself. Several other projects have ended up
making a full transition to Git -- GNOME (from Subversion) and
Dragonfly BSD (from CVS) spring to mind. If you can migrate even from
CVS, doing it from SVN ought to be relatively trivial -- git-svn is
not bulletproof (at least in the past) but it can resume an
interrupted fetch job.

Best regards,