|
|
(164 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| | '''''NOTE 2008: The migration has be done - this page is archived for historical reasons''''' |
| | |
| This page contains notes related to GRASS code migration (planned) from CVS to SVN. | | This page contains notes related to GRASS code migration (planned) from CVS to SVN. |
|
| |
|
| == Basic == | | == Meta == |
| | |
| * The SVN command line interface is just like CVS, many tasks are identical- just change the program name from cvs to svn.
| |
|
| |
|
| == Gotchas ==
| | * [[SVN_hosting|Where to host the SVN repository?]] |
| | : '''''October 2007: It has been decided to open the SVN at OSGeo''''' |
|
| |
|
| * 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.
| | == Basic == |
|
| |
|
| * 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 ...). | | * The SVN command line interface is just like CVS, many tasks are identical - just change the program name from cvs to 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
| |
|
| |
|
| == GRASS CVS repository structure == | | == GRASS CVS repository structure == |
|
| |
|
| /grass | | /grass-cvs |
| | | |
| +---/grass | | +---/grass |
| | | |
| +---/grass51 | | +---/grass51 |
| | | |
| +---/grass6 | | +---/grass6 |
| | | |
| +---/grass_doc | | +---/grass_doc |
| | | |
| +---/libgrass | | +---/libgrass |
| | | |
| +---/newsletter | | +---/newsletter |
| | | |
| +---/programgrass50 | | +---/programgrass50 |
| | | |
| +---/web | | +---/web |
|
| |
|
| == Testing SVN repository == | | == GRASS OSGeo SVN repository structure == |
|
| |
|
| * grass/grass should be renamed to grass/grass5
| | See [[Talk:Migration_from_CVS_to_SVN|Discussion page]] for details. |
|
| |
|
| Migrate all directories or only actively used (grass, grass6, newsletter, web)?
| | /grass-svn |
| | | | |
| === Proposed structure ===
| | +---/grass |
| | | | | |
| /grass | | | +---/trunk (grass6 CVS HEAD) |
| +---/grass5 | | | | |
| +---/grass6 | | | +---/branches |
| +---/newsletter | | | | | |
| +---/web | | | | +---/releasebranch_5_x (note: 5_5 based on grass5 CVS HEAD) |
| | | | | | |
| === Copy of GRASS CVS repository ===
| | | | +---/releasebranch_6_x |
| | | | | |
| rsync -r --times --links --bwlimit=200 rsync://rsync.intevation.de/grass grass-cvs | | | +---/tags |
| | | | |
| → cca 600 MB!
| | |---/grass-addons |
| | | | |
| === Creating SVN repository ===
| | +---/grass-web |
| | | | | |
| ==== Only grass6 ====
| | | +---/trunk |
| | |
| 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).
| |
| ERROR: A CVS repository cannot contain both grass-cvs/grass6/visualization/nviz/src/tmp,v and grass-cvs/grass6/visualization/nviz/src/Attic/tmp,v
| |
| | |
| Solution:
| |
| | |
| * [http://cvs2svn.tigris.org/faq.html#atticprob cvs2svn FAQ]
| |
| | |
| 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
| |
| rm -f grass-cvs/grass6/visualization/nviz/src/Attic/tmp,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-branch=releasebranch_6_2 -s grass6svn grass-cvs/grass6
| |
| | |
| Exclude all [http://grass.itc.it/devel/cvstags.php undocumented] braches
| |
| | |
| cvs2svn --use-cvs --no-default-eol --force-branch=releasebranch_6_2 \
| |
| --exclude="grass" \ | |
| --exclude="grassreleasebranch_5_0_0" \ | |
| --exclude="markus" \
| |
| --exclude="releasebranch_14_august_2001_5_0_0" \
| |
| --exclude="releasebranch_26_april_2002_5_0_0" \
| |
| --exclude="releasebranch_5_4" \
| |
| --exclude="unlabeled.*" \
| |
| -s grass6svn1 grass-cvs/grass6
| |
| ...
| |
| ----- pass 2 (CollateSymbolsPass) -----
| |
| Checking for blocked exclusions...
| |
| ERROR: The branch 'markus' cannot be excluded because the following symbols depend on it:
| |
| 'start'
| |
| 'releasebranch_11_april_2001_5_0_0'
| |
| ERROR: The branch 'grass' cannot be excluded because the following symbols depend on it:
| |
| ...
| |
|
| |
|
| cvs2svn --use-cvs --no-default-eol --force-branch=releasebranch_6_2 \
| | Notes: |
| --exclude="grass" \
| | * <tt>grass51</tt>, <tt>grass_doc</tt>, <tt>libgrass</tt> and <tt>programgrass50</tt> are dead, will be not migrated |
| --exclude="grassreleasebranch_5_0_0" \
| | * <tt>grass</tt> migrated as <tt>grass/branches/releasebranch_5_5</tt> |
| --exclude="markus" \
| | * <tt>web</tt> migrated as <tt>grass-web</tt> |
| --exclude="releasebranch_14_august_2001_5_0_0" \
| | * <tt>newsletter</tt> will be merged with OSGeo newsletter repository |
| --exclude="releasebranch_26_april_2002_5_0_0" \
| | * wxPython GUI moved from grass-addons to grass code base (<tt>grass/gui/wxpython</tt>) |
| --exclude="releasebranch_5_4" \
| | * <tt>gui/wxpython/screenshots</tt> removed, can be part of grass-addons (e.g. <tt>grass-addons/screenshots/wxpython</tt>) |
| --exclude="unlabeled.*" \
| |
| --exclude="devices_cleanup_20000420" \
| |
| --exclude="post_compare_glynn_head_2002_11_27" \
| |
| --exclude="post_compare_glynn_release_2002_11_27" \
| |
| --exclude="post_merge_head_2002_01_22" \
| |
| --exclude="post_sync_2002_01_22" \
| |
| --exclude="pre-curses-fix" \
| |
| --exclude="pre_merge_head_2002_01_22" \
| |
| --exclude="pre_merge_release_2002_01_22" \
| |
| --exclude="pre_sync_2001_10_31" \
| |
| --exclude="pre_sync_2002_01_17" \
| |
| --exclude="release_03_11_2003_grass5_0_3" \
| |
| --exclude="release_05_11_2004_grass5_4_0" \
| |
| --exclude="release_10_04_2003_grass5_0_2" \
| |
| --exclude="release_13_may_2002_grass5_0_0_pre4" \
| |
| --exclude="release_13_september_2001_grass5_0_0_pre2" \
| |
| --exclude="release_15_05_2004_grass5_3_0" \
| |
| --exclude="release_16_january_2002_grass5_0_0_pre3" \
| |
| --exclude="release_17_06_2004_grass5_7_0" \
| |
| --exclude="release_25_06_2002_grass5_0_0_pre5" \
| |
| --exclude="release_28_01_2003_grass5_0_1" \
| |
| --exclude="release_30_08_2002_grass5_0_0" \
| |
| --exclude="releasebranch_11_april_2001_5_0_0" \
| |
| --exclude="releasebranch_11_april_2001_5_0_0_DEAD" \
| |
| --exclude="releasebranch_500" \
| |
| --exclude="releasebranch_5_0_0" \
| |
| --exclude="release_grass500pre1_20_may_2001" \
| |
| --exclude="release_grass5beta10_7_december_2000" \
| |
| --exclude="release_grass5beta11_4_february_2001" \
| |
| --exclude="release_grass5beta11pre1_21_january_2001" \
| |
| --exclude="release_grass5beta11pre2_28_january_2001" \
| |
| --exclude="release_grass5beta6_16_feb_2000" \
| |
| --exclude="release_grass5beta7_20_april_2000" \
| |
| --exclude="release_grass5beta8_26_july_2000" \
| |
| --exclude="release_grass5beta9_6_december_2000" \
| |
| --exclude="start" \
| |
| --exclude="testbranch_5_0_0stable" \
| |
| --exclude="unlabeled-1.1.1.1.4" \
| |
| --exclude="unlabeled-1.1.1.1.6" \
| |
| --exclude="color_changes_20010502" \
| |
| -s grass6svn grass-cvs/grass6
| |
|
| |
|
| Add other switches (e.g. <tt>--encoding</tt>) ??
| | [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/ Scripts]: |
|
| |
|
| cvs2svn --use-cvs --no-default-eol --force-branch=releasebranch_6_2 \
| | :* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-base.sh grass-cvs2svn-base.sh] |
| --exclude="grass" \
| | :* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-s2.sh grass-cvs2svn-s2.sh] |
| --exclude="grassreleasebranch_5_0_0" \
| | :* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-wxpython.sh grass-cvs2svn-wxpython.sh] |
| --exclude="markus" \
| |
| --exclude="releasebranch_14_august_2001_5_0_0" \
| |
| --exclude="releasebranch_26_april_2002_5_0_0" \
| |
| --exclude="releasebranch_5_4" \
| |
| --exclude="unlabeled.*" \
| |
| --exclude="devices_cleanup_20000420" \
| |
| --exclude="post_compare_glynn_head_2002_11_27" \
| |
| --exclude="post_compare_glynn_release_2002_11_27" \
| |
| --exclude="post_merge_head_2002_01_22" \
| |
| --exclude="post_sync_2002_01_22" \
| |
| --exclude="pre-curses-fix" \
| |
| --exclude="pre_merge_head_2002_01_22" \
| |
| --exclude="pre_merge_release_2002_01_22" \
| |
| --exclude="pre_sync_2001_10_31" \
| |
| --exclude="pre_sync_2002_01_17" \
| |
| --exclude="release_03_11_2003_grass5_0_3" \
| |
| --exclude="release_05_11_2004_grass5_4_0" \
| |
| --exclude="release_10_04_2003_grass5_0_2" \
| |
| --exclude="release_13_may_2002_grass5_0_0_pre4" \
| |
| --exclude="release_13_september_2001_grass5_0_0_pre2" \
| |
| --exclude="release_15_05_2004_grass5_3_0" \
| |
| --exclude="release_16_january_2002_grass5_0_0_pre3" \
| |
| --exclude="release_17_06_2004_grass5_7_0" \
| |
| --exclude="release_25_06_2002_grass5_0_0_pre5" \
| |
| --exclude="release_28_01_2003_grass5_0_1" \
| |
| --exclude="release_30_08_2002_grass5_0_0" \
| |
| --exclude="releasebranch_11_april_2001_5_0_0" \
| |
| --exclude="releasebranch_11_april_2001_5_0_0_DEAD" \
| |
| --exclude="releasebranch_500" \
| |
| --exclude="releasebranch_5_0_0" \
| |
| --exclude="release_grass500pre1_20_may_2001" \
| |
| --exclude="release_grass5beta10_7_december_2000" \
| |
| --exclude="release_grass5beta11_4_february_2001" \
| |
| --exclude="release_grass5beta11pre1_21_january_2001" \
| |
| --exclude="release_grass5beta11pre2_28_january_2001" \
| |
| --exclude="release_grass5beta6_16_feb_2000" \
| |
| --exclude="release_grass5beta7_20_april_2000" \
| |
| --exclude="release_grass5beta8_26_july_2000" \
| |
| --exclude="release_grass5beta9_6_december_2000" \
| |
| --exclude="start" \
| |
| --exclude="testbranch_5_0_0stable" \
| |
| --exclude="unlabeled-1.1.1.1.4" \
| |
| --exclude="unlabeled-1.1.1.1.6" \
| |
| --exclude="color_changes_20010502" \
| |
| --encoding="ASCII" \
| |
| --encoding="UTF-8" \
| |
| --encoding="ISO-8859-1" \
| |
| -s grass6svn grass-cvs/grass6
| |
|
| |
|
| → '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass6svn grass6svn]'''
| | For text files are used <tt>keywords=Author Date Id Revision</tt>, in detail: |
|
| |
|
| ==== grass6 HEAD → grass7 ====
| | :* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/propsfile-g5-2 props file for grass5] |
| | :* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/propsfile-g6-2 props file for grass6] |
|
| |
|
| cvs2svn --use-cvs --no-default-eol --force-branch=releasebranch_6_2 --trunk-only -s grass7svn grass-cvs/grass6
| | <!-- → '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass-svn2 grass-svn2]''' --> |
|
| |
|
| → '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass7svn grass7svn]'''
| | === GRASS 7 development notes === |
|
| |
|
| ==== Whole grass repository (selected directories) ====
| | [[Image:Grass7-development-svn.png|center]] |
|
| |
|
| == External links == | | == External links == |
Line 223: |
Line 85: |
| * [http://cvs2svn.tigris.org/cvs2svn.html cvs2svn tool page] | | * [http://cvs2svn.tigris.org/cvs2svn.html cvs2svn tool page] |
| * [http://www.neogia.org/Cvs_To_Subversion_Migration_Plan Migration plan example] | | * [http://www.neogia.org/Cvs_To_Subversion_Migration_Plan Migration plan example] |
| | * [http://www.xs4all.nl/~carlo17/svn/cvs2svn.html Converting CVS to subversion] |
| | * [http://docs.codehaus.org/display/ninja/List+CVS+Tags List CVS Tags] |
|
| |
|
| * Online book: [http://svnbook.red-bean.com/nightly/en/index.html Version Control with Subversion] | | * Online book: [http://svnbook.red-bean.com/nightly/en/index.html Version Control with Subversion] |
Line 232: |
Line 96: |
|
| |
|
| [[Category:Development]] | | [[Category:Development]] |
| | [[Category:Historic]] |