Migration from CVS to SVN: Difference between revisions
Jump to navigation
Jump to search
m (→Creating SVN repository: typo) |
(→Creating SVN repository: migrate only head) |
||
Line 24: | Line 24: | ||
=== Creating SVN repository === | === Creating SVN repository === | ||
;Migrate grass6 | |||
cvs2svn --use-cvs --no-default-eol -s grass6svn grass-cvs/grass6 | cvs2svn --use-cvs --no-default-eol -s grass6svn grass-cvs/grass6 | ||
Line 53: | Line 55: | ||
Use --force-tag, --force-branch and/or --exclude to resolve the ambiguity. | Use --force-tag, --force-branch and/or --exclude to resolve the ambiguity. | ||
'releasebranch_6_2' is a tag in 2 files, a branch in 5259 files and has commits in 1513 files | 'releasebranch_6_2' is a tag in 2 files, a branch in 5259 files and has commits in 1513 files | ||
Restart | |||
cvs2svn --use-cvs --no-default-eol --force-brach=releasebranch_6_2 -s grass6svn grass-cvs/grass6 | |||
; Migrate only grass6 HEAD | |||
; Testing SVN | |||
<center>'''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass6svn josef.fsv.cvut.cz]'''</center> | <center>'''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass6svn josef.fsv.cvut.cz]'''</center> |
Revision as of 11:55, 12 September 2007
This page contains notes related to GRASS code migration (planned) from CVS to SVN.
Basic
- The SVN command line interface is just like CVS, many tasks are identical- just change the program name from cvs to svn.
Gotchas
- cvs2svn is known to break binary files (images) which were not imported into the CVS with the -kb flag. Luckily Glynn fixed most of these some months ago.
- Files using keyword substitution, such as $Date$ in the description.html files, will have to have support for that enabled manually, once per file (or write a find routine with | xargs svn ...).
$ svn propset svn:keywords "Date" filename.txt $ svn commit
- how to maintain timestamps of files? We want to keep the last modification date, not the date of local download
Testing SVN repository
Copy of GRASS CVS repository
rsync -r --times --links --bwlimit=200 rsync://rsync.intevation.de/grass grass-cvs
→ cca 600 MB!
Creating SVN repository
- Migrate grass6
cvs2svn --use-cvs --no-default-eol -s grass6svn grass-cvs/grass6 ... Error summary: ERROR: A CVS repository cannot contain both grass-cvs/grass6/display/d.erase/main.c,v and grass-cvs/grass6/display/d.erase/Attic/main.c,v ERROR: A CVS repository cannot contain both grass-cvs/grass6/general/g.mapsets/main_inter.c,v and grass-cvs/grass6/general/g.mapsets/Attic/main_inter.c,v ERROR: A CVS repository cannot contain both grass-cvs/grass6/include/gproj_api.h,v and grass-cvs/grass6/include/Attic/gproj_api.h,v ERROR: A CVS repository cannot contain both grass-cvs/grass6/visualization/nviz/src/getCat.c,v and grass-cvs/grass6/visualization/nviz/src/Attic/getCat.c,v Exited due to fatal error(s).
Solution:
Remove Attic files (?)
rm -f grass-cvs/grass6/display/d.erase/Attic/main.c,v rm -f grass-cvs/grass6/general/g.mapsets/Attic/main_inter.c,v rm -f grass-cvs/grass6/include/Attic/gproj_api.h,v rm -f grass-cvs/grass6/visualization/nviz/src/Attic/getCat.c,v
Restart
cvs2svn --use-cvs --no-default-eol -s grass6svn grass-cvs/grass6 ... ----- pass 2 (CollateSymbolsPass) ----- ERROR: It is not clear how the following symbols should be converted. Use --force-tag, --force-branch and/or --exclude to resolve the ambiguity. 'releasebranch_6_2' is a tag in 2 files, a branch in 5259 files and has commits in 1513 files
Restart
cvs2svn --use-cvs --no-default-eol --force-brach=releasebranch_6_2 -s grass6svn grass-cvs/grass6
- Migrate only grass6 HEAD
- Testing SVN
External links
- My Experiences With Subversion by Simon Tatham
- cvs2svn tool page
- Online book: Version Control with Subversion
SVN hosting
There are two main options to host the new SVN repository.