Since two weeks ROOT has moved to Subversion for version control.
We have made the change because Subversion offers many benefits over CVS. Basically all large Open Source projects have preceded us in this move. For more details about the why, how and where see this presentation.
A detailed Subversion HowTo has been added to the ROOT website.
To ease the migration for the CVS head users we will be keeping the CVS head in sync with the Subversion trunk till the 1st of November. The CVS patch branches for v5-12 and v5-14 will be maintained and remain available in CVS (and of course also in Subversion). The ROOT developers are already exclusively working in Subversion and the CVS syncing is done via a Subversion hook script. However, for the developers to benefit fully of the new features of Subversion, we cannot keep this automatic syncing past the 1st of November.
[quote]Since two weeks ROOT has moved to Subversion for version control.
[/quote]
Hi. Two days ago I’ve downloaded CVS head (sure, using CVS, not SVN).
After compression the size of root.tar.gz was about 22 MB.
Yestarday I’ve installed SVN and downloaded ROOT’s head with SVN.
After compression the size of root.tar.gz is 40 MB. What’s wrong?
I took command from SVN howto you ment:
Because svn creates copies of all files in .svn directories. This allows svn to work completely off-line and having pristine copies around in case you want to revert. Of course this doubles the space. If you make you tar exclude the .svn directories.
if you tar zcvf root.tar.gz root you tar all the “.svn” directories with the full history that you do not get in the cvs case.
Let me repeat to make a tar file use “make distsrc”. This will not include the .svn directories.
I’ve just noticed - the size of, say, gl module is twice the size of gl module downloaded by CVS.
In my $ROOTSYS/gl/src/.svn/text-base/ I have copies of ALL SOURCES from gl/src. I never used SVN before and do not know how it works. May be I should configure it somehow? Does this mean that using svn I’m downloading more data or text-base is created on my machine (not downloaded)?
[quote]
Well, of course you don’t really download more data, the data is just copied on arrival so it has not impact on the network.
– Fons[/quote]
Ah! Yes, that’s what I thought (and think) a good logically-correct system should do
So big repo! It took me 4 days to checkout the whole repo with “git svn”! Now, I have all branches and tags locally.
$ 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.
OK, after “git gc”, the repo is slightly decreased in size:
$ git gc
$ du -sh .
576M .
$ du -sh .git
443M .git
[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?
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])
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 .