ROOT has moved to Subversion

Thanks, I’ve corrected the link to the Subversion HowTo in the top of this thread.

Cheers, Fons.

Now, how big is the whole repository with all tags and logs? Near 1GB?

Yes, 1.07 GB.

Cheers, Fons.

So big repo! It took me 4 days to checkout the whole repo with “git svn”! Now, I have all branches and tags locally. #-o :unamused:

$ git svn http://root.cern.ch/svn/root/ --stdlayout
...
$ du -sh root
713M   root
$ du -sh root/.git
579M  root/.git

Now, I can browser all history and changes locally. Though I definitely know that I cannot view all the codes in the rest of my life, still feel happy to have it. :slight_smile:

OK, after “git gc”, the repo is slightly decreased in size:

$ git gc
$ du -sh .
576M     .
$ du -sh .git
443M     .git

It is still big. :slight_smile:

Next week I hope to have a git mirror running on root.cern.ch, so you can access the whole thing from our git.

Cheers, Fons.

[quote=“rdm”]Next week I hope to have a git mirror running on root.cern.ch, so you can access the whole thing from our git.
Cheers, Fons.[/quote]
Where is the git mirror? :slight_smile:

After “git svn clone --stdlayout”, the local repo doesn’t take remote svn tags as local tags. So I wrote this little python script to correct it. Hope it helpful for others who want to use “git svn”:

#!/usr/bin/env python
import os

def git_fix_svn_tags(gdir):
    print "Change to dir %s"%gdir
    os.chdir(gdir)
    svn_tags = []
    for l in os.popen("git show-ref").readlines():
        head,tag = l.strip().split()
        if "remotes/tags" in tag:
            svn_tags.append([head,tag.split("/")[-1]])
    for t in svn_tags:
        print "Add tag: %s (%s)"%(t[1],t[0]),
        if os.system("git tag %s %s"%(t[1],t[0])) == 0: print "OK!"
        else: print "Oops!"

if __name__=="__main__":
    import sys
    if len(sys.argv) < 2:
        print "Usage: %s <path-in-git-control>"%sys.argv[0]
    else: git_fix_svn_tags(sys.argv[1])

I’ll try to provide the git mirror after the release next week. Thanks for the script.

Cheers, Fons.

Another problem I encountered while doing “git svn rebase” is the following error:

Byte order is not compatible at ../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/_retrieve.al) line 380, at /usr/lib/perl5/5.10/Memoize/Storable.pm line 21

This case happens when you checkout the repo in an x86_64 PC and update it in another x86 PC. This problem can be fixed by delete the directory “.git/svn/.caches” according to goo.gl/zo2AL .

@Fons Any update on this?

Having this would be very helpful.

If you need help setting this up please let us know. You could then clone the repository with all branches.

Another call here for the git mirror to be set up.

I’d rather not spend the time (and waste your bandwidth) pulling down from the subversion repository…

Hi,

it is on my TODO for the coming days. Was working on some other issues to be fixed first. It is coming! Stay tuned.

Cheers, Fons.

Hello again,

sorry for being a little pushy, but I was wondering what was holding you back to provide a git-mirror. The import to git can be done quite easily and updates could be automatically published from svn->git so you wouldn’t really need to immediately change your other infrastructure to provide this.

Let us know what you need and we will try to help.

hello all,

I tried to compile root svn folder under MS Windows with VC++ Studio 2010 Express.
It places all binary and library file under Debug or Release directories.
and i dont know how and where to copy those files to get a working root system.

is there any script or somehing lik that?

thanks
YILMAZ

note: there is no such problem compiling in Linux systems

Hi,

First, you should have open a new thread for a new question…
Then how did you build Root exactly? Using cmake?

Cheers, Bertrand.

hi,

i have a clear description in this post:
[url]How can i compile root source on windows with Visual C++

thanks in advance

Why not Git? :frowning:

Hi all,

Is there any update on the status of a centrally supported git ROOT repository? It would be extremely useful, especially for ROOT developers.

(I personally believe that ROOT should move toward using git as the default version control software for MANY reasons, but one step at a time).

Cheers,

  • George

Though “git” is easy to learn (you may refer to Pro GIT, an online book), it still needs time for developers to transfer their work copies and get familiar with this distributed development environment. I think, “git-svn” is good enough for though who prefer git. Because ROOT repository is quite big, you’d better use “-r:HEAD” with “git-svn”, e.g.

The “-r:HEAD” parameter may save your network bandwidth.

FWIW I have pushed an import of the ROOT subversion history to github at github.com/bbannier/ROOT. I update this from time to time, but it should also be a good starting point for anyone working with git-svn against ROOT svn.

I managed to automatically include most svn branches as git branches, I only failed to import banches stored in subversion under branches/dev (might be possible to do this correctly by hand). I didn’t work on teaching git about merges it failed to automatically recognize though.

Since ROOT seems to become cleaner/more strict, e.g. regarding what is put into the global namespace or with less fuzzy implementations, having e.g. patch branches in git allows to cleanly see when something breaks in our code with e.g. git-bisect.

And having all of that available locally just uses around 600MB in a bare clone.

I just want to mention how immensely bbannier’s git repository is. I can switch between arbitrarily distant ROOT branches in a matter of seconds without touching the network. This is very useful for testing and debugging across different versions of ROOT.