Difference between revisions of "Migration from CVS to SVN"

From GRASS-Wiki
Jump to: navigation, search
m (Proposed structure: grass7 note)
m (Category:Historic)
 
(39 intermediate revisions by 3 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.
+
* [[SVN_hosting|Where to host the SVN repository?]]
 +
: '''''October 2007: It has been decided to open the SVN at OSGeo'''''
  
== Gotchas ==
+
== Basic ==
  
* 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.
+
* The SVN command line interface is just like CVS, many tasks are identical - just change the program name from cvs to svn.
 
 
* 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
 
or
 
$ find . -name '*.c' | xargs svn propset svn:keywords "Date"
 
$ find . -name '*.html' | xargs svn propset svn:keywords "Date"
 
$ 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-cvs
 
  /grass-cvs
|
 
+---/CVSROOT
 
 
  |
 
  |
 
  +---/grass
 
  +---/grass
Line 41: Line 32:
 
  +---/web
 
  +---/web
  
== Testing SVN repository ==
+
== GRASS OSGeo SVN repository structure ==
 
 
* grass/grass should be renamed to grass/grass5
 
 
 
'''Question:'''
 
* Migrate all directories or only actively used (grass, grass6, newsletter, web)?
 
* Create separate repositories (grass5, grass6, grassweb, grassnewsletter, grass7) or one repository (grass-svn)?
 
 
 
=== Proposed structure ===
 
 
 
Note: grass6 was created by copying files from grass5 in 2000. Development of GRASS 7 will start after migration.
 
 
 
==== Scenario 1 ====
 
/grass-svn
 
|
 
+---/grass5
 
|    |
 
|    +---/branches
 
|    |
 
|    +---/tags
 
|    |
 
|    +---/trunk
 
|
 
+---/grass6
 
|    |
 
|    +---/branches
 
|    |
 
|    +---/tags
 
|    |
 
|    +---/trunk
 
|
 
+---/grass7
 
|    |
 
|    +---/branches
 
|    |
 
|    +---/tags
 
|    |
 
|    +---/trunk
 
|
 
+---/grassaddons
 
|    |
 
|    +---/trunk
 
 
 
==== Scenario 2 ====
 
/grass-svn
 
|
 
+---/trunk (grass6 CVS HEAD + grassaddons)
 
|
 
+---/branches
 
|    |
 
|    +---/releasebranch_5_x (note: 5_5 based on grass5 CVS HEAD)
 
|    |
 
|    +---/releasebranch_6_x
 
|    |
 
|    +---/releasebranch_7_x (grass6 CVS HEAD)
 
|
 
+---/tags
 
  
or
+
See [[Talk:Migration_from_CVS_to_SVN|Discussion page]] for details.
  
 
  /grass-svn
 
  /grass-svn
Line 112: Line 47:
 
  |    |    |
 
  |    |    |
 
  |    |    +---/releasebranch_6_x
 
  |    |    +---/releasebranch_6_x
|    |    |
 
|    |    +---/releasebranch_7_x (grass6 CVS HEAD)
 
 
  |    |
 
  |    |
 
  |    +---/tags
 
  |    +---/tags
 
  |
 
  |
 
  |---/grass-addons
 
  |---/grass-addons
 +
|
 +
+---/grass-web
 
  |    |
 
  |    |
 
  |    +---/trunk
 
  |    +---/trunk
 
==== Scenario 3 ====
 
 
/grass-svn
 
|
 
+---/trunk
 
|    |
 
|    +---/grass5 (grass5 CVS HEAD)
 
|    |
 
|    +---/grass6 (grass6 CVS HEAD)
 
|    |
 
|    +---/grass7 (grass6 CVS HEAD, then modifications)
 
|    |
 
|    +---/grassaddons (grassaddons SVN HEAD)
 
|
 
+---/branches
 
|    |
 
|    +---/releasebranch_5_x
 
|    |
 
|    +---/releasebranch_6_x
 
|
 
+---/tags
 
 
=== Copy of GRASS CVS repository ===
 
 
rsync -r --times --links --bwlimit=200 --delete rsync://rsync.intevation.de/grass grass-cvs
 
 
→ cca 600 MB!
 
 
=== Creating GRASS SVN repository ===
 
 
==== grass5 ====
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grass5svn-orig grass-cvs/grass
 
 
→ '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass5svn-orig grass5svn-orig]'''
 
 
'''Question:''' exclude selected branches/tags (which one?)
 
 
According to [http://grass.itc.it/devel/cvstags.php undocumented] these branches/tags are suggested to be excluded:
 
 
--exclude="Mike" \
 
--exclude="grass" \
 
--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_15_05_2004_grass5_3_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_grass5beta11pre1_21_january_2001 \
 
--exclude=release_grass5beta11pre2_28_january_2001 \
 
--exclude=start \
 
--exclude=testbranch_5_0_0stable \
 
--exclude=grassreleasebranch_5_0_0 \
 
 
A lot of dependency problems:
 
 
ERROR: The branch 'unlabeled-1.7.4' cannot be excluded because the following symbols depend on it:
 
    'release_grass500pre1_20_may_2001'
 
    'release_13_september_2001_grass5_0_0_pre2'
 
    'release_16_january_2002_grass5_0_0_pre3'
 
    'releasebranch_14_august_2001_5_0_0'
 
ERROR: The branch 'unlabeled-1.6.4' cannot be excluded because the following symbols depend on it:
 
    'release_grass500pre1_20_may_2001'
 
    'color_changes_20010502'
 
    'release_13_september_2001_grass5_0_0_pre2'
 
    'release_16_january_2002_grass5_0_0_pre3'
 
    'releasebranch_14_august_2001_5_0_0'
 
...
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--exclude="Mike" \
 
--exclude="grass" \
 
--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=releasebranch_5_4 \
 
--exclude=grassreleasebranch_5_0_0 \
 
--exclude=releasebranch_26_april_2002_5_0_0 \
 
-s grass5svn grass-cvs/grass
 
 
→ '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass5svn grass5svn]'''
 
 
==== 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).
 
 
'''Question:''' Remove Attic files?
 
 
* [http://cvs2svn.tigris.org/faq.html#atticprob cvs2svn FAQ]
 
* [http://www.nabble.com/cvs2svn-questions-tf4690871.html#a13406752 From GRASS-dev ML]
 
 
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-branch=releasebranch_6_2 \
 
-s grass6svn-orig grass-cvs/grass6
 
 
→ '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass6svn-orig grass6svn-orig]'''
 
 
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  \
 
--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.*" \
 
--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
 
 
'''Question:''' Exclude more tags (which)?
 
* I guess tags "freetypecap", "lastworking", "pre_fileinfo_change" and maybe also "pre_vdigit_changes_.*" could be also excluded... --ML
 
 
Add other switches (e.g. <tt>--encoding</tt>) ??
 
 
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.*" \
 
--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" \
 
--exclude="freetypecap" \
 
--exclude="lastworking" \
 
--exclude="pre_fileinfo_change" \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grass6svn grass-cvs/grass6
 
 
All documented braches/tags were migrated. Repository contains also some undocumented tags: grass_6_0_0, grass_6_0_0beta1, post_vdigit_changes_2007023, pre_vdigit_changes_20070221, pre_vdigit_changes_2007023, release_20071021_grass_6_2_3RC1. In contrast releasebranch_6_0 is missing.
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass6svn grass6svn]'''
 
 
==== newsletter ====
 
 
SUGGESTION: merge newsletter into the OSGeo journal SVN
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grassnlsvn grass-cvs/newsletter
 
 
'''Question:''' exclude branch "markus" and tags "Final_version", "ready_for_grammar_spelling_correction" and "start"?
 
* I guess maybe only trunk can be migrate, we don't need any branches and tags in this case... --ML
 
 
cvs2svn --use-cvs --no-default-eol \
 
--exclude="markus" \
 
--exclude="Final_version" \
 
--exclude="ready_for_grammar_spelling_correction" \
 
--exclude="start" \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grassnlsvn grass-cvs/newsletter
 
...
 
Checking for blocked exclusions...
 
ERROR: The branch 'markus' cannot be excluded because the following symbols depend on it:
 
    'volume1_final'
 
...
 
 
Cannot exclude branch "markus"
 
 
cvs2svn --use-cvs --no-default-eol \
 
--exclude="Final_version" \
 
--exclude="ready_for_grammar_spelling_correction" \
 
--exclude="start" \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grassnlsvn grass-cvs/newsletter
 
 
'''Questions:'''
 
* Rename brach "markus"?
 
* Rename tags "volume[1|2]_final" to "release_vol[1|2]"?
 
 
I guess only trunk is enough -- ML
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--trunk-only \
 
-s grassnlsvn grass-cvs/newsletter
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grassnlsvn grassnlsvn]
 
 
==== web ====
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grasswebsvn grass-cvs/web
 
...
 
ERROR: A CVS repository cannot contain both grass-cvs/web/bugtracking/index.html,v and grass-cvs/web/bugtracking/Attic/index.html,v
 
...
 
 
'''Question:''' Remove Attic file?
 
 
rm -f grass-cvs/web/bugtracking/Attic/index.html,v
 
 
'''Question:''' Ignore branches ("markus") and tags ("start")?
 
 
cvs2svn --use-cvs --no-default-eol \
 
--trunk-only \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grasswebsvn grass-cvs/web
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grasswebsvn grasswebsvn]
 
 
==== grass7 ====
 
 
Based on grass6 HEAD.
 
 
cvs2svn --use-cvs --no-default-eol \
 
--force-branch=releasebranch_6_2 \
 
--trunk-only \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
-s grass7svn grass-cvs/grass6
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass7svn grass7svn]'''
 
 
==== Scenario 1 ====
 
 
svnadmin create grass-svn
 
 
cvs2svn --use-cvs --no-default-eol \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--branches=grass5/branches \
 
--tags=grass5/tags \
 
--trunk=grass5/trunk \
 
--existing-svnrepos \
 
-s grass-svn grass-cvs/grass
 
 
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.*" \
 
--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" \
 
--branches=grass6/branches \
 
--tags=grass6/tags \
 
--trunk=grass6/trunk \
 
--existing-svnrepos \
 
-s grass-svn grass-cvs/grass6
 
 
cvs2svn --use-cvs --no-default-eol \
 
--exclude="Final_version" \
 
--exclude="ready_for_grammar_spelling_correction" \
 
--exclude="start" \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--branches=newsletter/branches \
 
--tags=newsletter/tags \
 
--trunk=newsletter/trunk \
 
--existing-svnrepos \
 
-s grass-svn grass-cvs/newsletter
 
 
cvs2svn --use-cvs --no-default-eol \
 
--trunk-only \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--trunk=web/trunk \
 
--existing-svnrepos \
 
-s grass-svn grass-cvs/web
 
 
cvs2svn --use-cvs --no-default-eol \
 
--force-branch=releasebranch_6_2 \
 
--trunk-only \
 
--encoding="ASCII" \
 
--encoding="UTF-8" \
 
--encoding="ISO-8859-1" \
 
--trunk=grass7/trunk \
 
--existing-svnrepos \
 
-s grass-svn grass-cvs/grass6
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass-svn grass-svn]'''
 
 
==== Scenario 2 ====
 
  
 
Notes:
 
Notes:
* newsletter repository can be merged with OSGeo newsletter repository
+
* <tt>grass51</tt>, <tt>grass_doc</tt>, <tt>libgrass</tt> and <tt>programgrass50</tt> are dead, will be not migrated
* web in separate repository outside of trac
+
* <tt>grass</tt> migrated as <tt>grass/branches/releasebranch_5_5</tt>
 
+
* <tt>web</tt> migrated as <tt>grass-web</tt>
Script available [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn here].
+
* <tt>newsletter</tt> will be merged with OSGeo newsletter repository
 
+
* wxPython GUI moved from grass-addons to grass code base (<tt>grass/gui/wxpython</tt>)
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass-svn2 grass-svn2]'''
+
* <tt>gui/wxpython/screenshots</tt> removed, can be part of grass-addons (e.g. <tt>grass-addons/screenshots/wxpython</tt>)
 
 
==== Scenario 3 ====
 
 
 
Script available [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn here].
 
 
 
&rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass-svn3 grass-svn3]'''
 
 
 
== MIME types ==
 
 
 
According to [http://www.xs4all.nl/~carlo17/svn/cvs2svn.html Converting CVS to subversion]:
 
 
 
CVSREPOS="$(pwd)/grass-cvs"
 
PROJECTNAME=grass6
 
 
 
# Find all extensions. Also include filenames without extension.
 
# The E (extension) and S (slash) trick is to get GNU sort to separate
 
# them, although this is not really necessary. But note that at the
 
# same time it removes the leading slash from filenames without extension.
 
find $CVSREPOS/$PROJECTNAME -type f -name '*,v' ! -name '.cvsignore,v' | \
 
    sed -e 's%.*\([./][^.]*\),v$%\1%' -e 's/\./E/' -e 's/\//S/' | \
 
    sort -u | sed -e 's/^S//' -e 's/^E/./' > step1
 
 
# Compose an extended regular expression that matches any "extension"
 
# as found by the previous step.
 
EXT1="($(grep '^\.' step1 | xargs echo | sed -e 's/^\.//' -e 's/\+/\\+/g' -e 's/ \./|/g'))"
 
 
# Find all mime-types and related extensions that really exist.
 
egrep -i '^[[:alnum:]][^[:space:]]*[[:space:]]+([^[:space:]]+ )*'"$EXT1"'($| )' /etc/mime.types > step2
 
 
# Extract the list of extensions from the previous step,
 
# filtering out the extensions that we don't have.
 
for ext in $(sed -re 's/^[^[:space:]]*[[:space:]]+//' step2); do echo $ext; done | \
 
    egrep -i '^'"$EXT1"'$' | sort -u > step3
 
 
# Compose an extended regular expression from the previous step.
 
EXT2="($(cat step3 | xargs echo | sed -e 's/ /|/g'))"
 
 
 
# Find all "extensions" that weren't really extensions
 
# (or for which we don't know a MIME type).
 
grep '^\.' step1 | egrep -iv '^\.'"$EXT2"'$' > step4
 
 
# And turn it into an extended regular expression.
 
EXT3="($(sed -e 's/\./\\\\./' step4 | xargs echo | sed -e 's/ /|/g'))"
 
 
# Create a list of files for which no MIME type is known.
 
find $CVSREPOS/$PROJECTNAME -type f -name '*,v' ! -name '.cvsignore,v' | \
 
    sed -e 's%.*/\([^/]*\),v$%\1%' | egrep -i "$EXT3"'$' | sort -u > step5
 
 
 
Binary files in 'step5':
 
 
 
./macosx/app/app.icns:                                      data
 
./db/drivers/dbf/dbf_catalog/datetime.dbf:                  DBase 3 data file (2 records)
 
./imagery/i.atcorr/test_suite/ETM4_400x400_atms_corr.raw:    data
 
./imagery/i.atcorr/test_suite/ETM4_400x400.raw:              data
 
./macosx/app/English.lproj/MainMenu.nib/keyedobjects.nib:    Apple binary property list
 
./lib/proj/nzgd2kgrid0005.gsb:                              data
 
./db/drivers/dbf/dbf_catalog/river.dbf:                      DBase 3 data file (5 records)
 
./raster/r.slope.aspect/r_sl_asp_northangle_diffs.tar.gz:    gzip compressed data, was "r.slope.aspect-diffs.tar",  from Unix, last modified: Tue Jul 21 20:15:15 1998
 
./lib/vector/diglib/test.ok:                                data
 
 
 
Add to mine.types:
 
 
 
application/dbase                          dbf
 
application/x-gtar                        gtar tgz taz tar.gz
 
application/octet-stream                  bin icns raw nib gsb ok
 
  
# Create a map from extension to MIME type. If a MIME type that starts
+
[http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/ Scripts]:
# with 'text' exist, use that - otherwise use application/octet-stream
 
# when there is more than one MIME type, or use the single known MIME type.
 
for f in $(cat step3); do \
 
    MIMETYPES=$(egrep -i '[[:space:]]'$f'( |$)' step2 | sed -e 's/[[:space:]].*//'); \
 
    echo $f: $MIMETYPES; done | \
 
    sed -e 's%:.* \(text/[^ ]*\).*%: \1%' -e 's%: [^ ].* .*%: application/octet-stream%' > step6
 
  
? b: chemical/x-molconn-Z (only ./raster/r.le/r.le.setup/polytocell/bmf.b, I guess it should be bmf.c...)
+
:* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-base.sh grass-cvs2svn-base.sh]
grass6/raster/r.le/r.le.setup/polytocell/bmf.b:              ASCII C program text
+
:* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-s2.sh grass-cvs2svn-s2.sh]
grass/src/raster/r.le/r.le.setup/polytocell/bmf.b:            ASCII C program text
+
:* [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn/grass-cvs2svn-wxpython.sh grass-cvs2svn-wxpython.sh]
grass/src/imagery/i.points3/inter/find.b:                    ASCII C program text
 
grass/src.contrib/SCS/paint/Programs/newp.map/cmd/scan_gis.b: ASCII C program text
 
grass/src.contrib/SCS/paint/Programs/newp.map/cmd/map.b:      ASCII C program text
 
grass/src.contrib/CERL/SGI/ISM/grid/gdwrit.b:                ASCII text
 
grass/src.garden/grass.hdf/hdf3/HDF.lib.3.2.3/doc/HDF.apdx.b: ASCII English text
 
-> b: text/plain
 
 
? bak: application/x-trash
 
grass/src.contrib/GMSL/sg4d/lightdefs.bak:                            ASCII C program text
 
grass/src.contrib/GMSL/g3d/src3d/raster/r3.showdspf.openGL/Viz.h.bak: ASCII C program text
 
-> bak: text/plain
 
 
? bat: application/x-msdos-program
 
grass6/scripts/windows_launch.bat:                            ASCII text
 
grass6/lib/init/grass.bat:                                    MS-DOS batch file text
 
grass6/lib/init/init.bat:                                    MS-DOS batch file text
 
grass6/lib/init/grass-run.bat:                                MS-DOS batch file text
 
grass6/visualization/nviz/scripts/nviz.bat:                  ASCII text
 
grass/src.contrib/CERL/raster/r.rational.regression/main.bat: ASCII C program text
 
grass/cygwin/startxgrass.bat:                                MS-DOS batch file text
 
grass/cygwin/startxwingrass.bat:                              MS-DOS batch file text
 
-> bat: text/plain
 
 
bin: application/octet-stream
 
grass/src/general/g.help/help/06.export/06.02.asc.bin: ASCII English text
 
grass/src/raster/r.out.bin:                           directory
 
grass/src/raster/r.in.bin:                             directory
 
grass/src/tcltkgrass/module/r.out.bin:                ASCII text
 
grass/src/tcltkgrass/module/r.in.bin:                  ASCII English text
 
grass/locale/ru/tcltkgrass/module/r.out.bin:          ISO-8859 text
 
grass/locale/ru/tcltkgrass/module/r.in.bin:            ISO-8859 text
 
grass6/raster/r.out.bin:                              directory
 
grass6/raster/r.in.bin:                                directory
 
-> bin: text/plain
 
 
cab: application/x-cab
 
grass/src.contrib/eurogis/v.in.EE/x.cab: ASCII text
 
-> cab: text/plain
 
 
cat: application/vnd.ms-pki.seccat
 
grass/src/scripts/contrib/i.oif/i.oif.cat: ASCII English text
 
-> cat: text/plain
 
 
application/java-vm
 
grass/src/general/g.help/help/09.imagery/09.04.class:      ASCII English text
 
grass/src/general/g.help/help/17.manual/Help.pages/i.class: ASCII English text
 
grass/src/imagery/i.class:                                  directory
 
grass6/imagery/i.class:                                    directory
 
-> class: text/plain
 
 
c: text/x-csrc
 
cc: text/x-c++src
 
cpp: text/x-c++src
 
css: text/css
 
csv: text/csv
 
 
? dat: chemical/x-mopac-input
 
grass6/misc/m.cogo/cogo.dat:                          ASCII text
 
grass6/lib/proj/ntv1_can.dat:                         data
 
grass6/lib/gis/fmode.dat:                             ASCII C program text
 
grass6/raster/r.statistics/gauss.dat:                  ASCII text
 
grass/src/libes/proj/ntv1_can.dat:                    data
 
grass/src/sites/s.qcount/tutorial/cls.dat:            ASCII text
 
grass/src/sites/s.qcount/tutorial/reg.dat:            ASCII text
 
grass/src/sites/s.qcount/tutorial/csr.dat:            ASCII text
 
grass/src/misc/m.cogo/cogo.dat:                        ASCII text
 
grass/src/raster/r.in.gridatb/example/elev.dat:        ASCII text
 
grass/src/raster/r.statistics/cmd/gauss.dat:          ASCII text
 
grass/src/paint/Drivers/versatec/patterns/ce3200.dat:  ASCII English text
 
grass/src.contrib/PURDUE/s.medp/doc/cressie.dat:      ASCII English text
 
grass/src.contrib/CERL/raster/nodenumber/xsect.dat:    ASCII text
 
grass/src.contrib/CERL/raster/nodenumber/yak_trap.dat: ASCII text
 
-> plain/text / application/octet-stream
 
 
dbf: application/dbase
 
 
? dir: application/x-director
 
grass6/raster/r.fill.dir:                    setgid directory
 
grass6/tools/cvs.rename.dir:                  POSIX shell script text executable
 
grass/src/raster/r.fill.dir:                  setgid directory
 
grass/src/tcltkgrass/module/r.fill.dir:      ASCII text
 
-> dir: text/plain
 
 
 
? doc: application/msword
 
grass/src/fonts/original/hershey.doc:                        ASCII English text
 
grass/src.contrib/SDTS/libes/fips123/bugs.doc:              data
 
grass/src.contrib/SDTS/libes/fips123/fixes.doc:              data
 
grass/src.contrib/SDTS/mapdev/v.in.sdts/filenames.doc:      ASCII English text
 
grass/src.nonGPL/agnps/r.agnps50/documentation/vrfsftwr.doc: Microsoft Word 6.0 Document
 
 
eps: application/postscript
 
fig: application/x-xfig
 
 
frame: application/x-maker
 
grass/src/display/d.frame:                                  directory
 
grass/src/general/g.help/help/12.map.display/12.03.d.frame: ASCII English text
 
grass/src/general/g.help/help/17.manual/Help.pages/d.frame: ASCII English text
 
grass/src/tcltkgrass/module/d.frame:                        ASCII English text
 
grass/locale/ru/tcltkgrass/module/d.frame:                  ISO-8859 text
 
grass/unused/tcltkgrass/module/d.frame:                    ASCII English text
 
grass6/display/d.frame:                                    directory
 
-> text/plain
 
 
frm: application/x-maker
 
grass/src/general/g.help/help/04.wind.mgmt/04.02.mng.frm: ASCII English text
 
-> text/plain
 
 
gen: chemical/x-genbank
 
grass/src/display/devices/windows/libW11/wrap/xwrappers.gen: ASCII C program text, with very long lines
 
-> text/x-csrc
 
 
hdf: application/x-hdf
 
grass/src/tcltkgrass/module/r.out.hdf:        ASCII text
 
grass/src/tcltkgrass/module/r.in.hdf:          ASCII text
 
grass/src.garden/grass.hdf:                    directory
 
grass/src.garden/grass.hdf/hdf3/old/r.out.hdf: directory
 
grass/src.garden/grass.hdf/hdf3/old/r.in.hdf:  directory
 
grass/src.garden/grass.hdf/hdf3/r.out.hdf:    directory
 
grass/src.garden/grass.hdf/hdf3/r.in.hdf:      directory
 
grass/src.garden/grass.hdf/hdf4/r.out.hdf:    directory
 
grass/src.garden/grass.hdf/hdf4/r.in.hdf:      directory
 
grass/src.garden/grass.hdf/hdf5/r.out.hdf:    directory
 
grass/src.garden/grass.hdf/hdf5/r.in.hdf:      directory
 
grass/locale/ru/tcltkgrass/module/r.out.hdf:  ISO-8859 text
 
grass/locale/ru/tcltkgrass/module/r.in.hdf:    ISO-8859 text
 
-> hdf: text/plain
 
 
gif: image/gif
 
gsb: application/octet-stream
 
h: text/x-chdr
 
hh: text/x-c++hdr
 
htm: text/html
 
html: text/html
 
icns: application/octet-stream
 
ico: image/x-icon
 
jpg: image/jpeg
 
lyx: application/x-lyx
 
man: application/x-troff-man
 
 
me: application/x-troff-me
 
grass/src.contrib/SCS/paint/Programs/ps.map/read.me: ASCII English text
 
-> text/plain
 
 
mid: audio/midi
 
grass/src/CMD/generic/make.mid: ASCII English text
 
-> text/plain
 
 
mpeg: video/mpeg
 
grass/src/raster/r.out.mpeg:            directory
 
grass/src/tcltkgrass/module/r.out.mpeg: ASCII English text
 
grass6/raster/r.out.mpeg:              directory
 
-> text/plain
 
 
application/x-troff-ms
 
grass/unused/man/utilities/ptx.to.ms: ASCII text
 
-> text/plain
 
 
nib: application/octet-stream
 
ok: application/octet-stream
 
 
? old: application/x-trash
 
grass6/dist.i686-pc-linux-gnu/docs/html/gem/img1.old: PNG image data, 559 x 111, 8-bit colormap, interlaced
 
grass6/gem/docs/GEM-Manual/img1.old:                  PNG image data, 559 x 111, 8-bit colormap, interlaced
 
grass/unused/misc/m.clump/proto.h.old:                ASCII C program text
 
grass/src/raster/r.random.surface/MAN.old:            troff or preprocessor input text
 
grass/src/tcltkgrass/README.old:                      ASCII English text
 
-> old: image/png for grass6 old: text/plain for grass5
 
 
pat: image/x-coreldrawpattern
 
grass/src/paint/Drivers/versatec/patterns/ce3200.pat: ASCII text
 
-> text/plain
 
 
patch: text/x-diff
 
pdf: application/pdf
 
pl: text/x-perl
 
pm: text/x-perl
 
 
pbm: image/x-portable-bitmap
 
grass/src/raster/r.in.pbm:            directory
 
grass/src/tcltkgrass/module/r.in.pbm: ASCII text
 
-> text/plain
 
 
pgm: image/x-portable-grayma
 
grass/src/raster/r.in.pgm:            directory
 
grass/src/tcltkgrass/module/r.in.pgm: ASCII text
 
-> text/plain
 
 
png: image/png
 
 
ppm: image/x-portable-pixmap
 
grass/src/paint/Programs/p.ppm:                          directory
 
grass/src/general/g.help/help/17.manual/Help.pages/p.ppm: ASCII text
 
grass/src/raster/r.out.ppm:                              directory
 
grass/src/raster/r.in.ppm:                                directory
 
grass/src/raster/r.in.ppm/trees24bit.ppm:                Netpbm PPM "rawbits" image data
 
grass/src/raster/r.in.ppm/image24bit.ppm:                Netpbm PPM "rawbits" image data
 
grass/src/tcltkgrass/module/r.out.ppm:                    ASCII text
 
grass/src/tcltkgrass/module/r.in.ppm:                    ASCII English text
 
grass/src.contrib/SCS/paint/Drivers/grey.ppm:            directory
 
grass/locale/ru/tcltkgrass/module/r.out.ppm:              ISO-8859 text
 
grass/locale/ru/tcltkgrass/module/r.in.ppm:              ISO-8859 text
 
-> text/plain / image/x-portable-pixmap
 
 
ps: application/postscript
 
py: text/x-python
 
 
raw: application/octet-stream
 
grass/src/mapdev/v.in.arc/testdata/f1.txt.raw:                ASCII text
 
grass/src/mapdev/v.in.arc/testdata/f2.txt.raw:                ASCII text
 
grass6/imagery/i.atcorr/test_suite/ETM4_400x400.raw:          data
 
grass6/imagery/i.atcorr/test_suite/ETM4_400x400_atms_corr.raw: data
 
-> text/plain for grass5
 
 
rgb: image/x-rgb
 
grass/src/display/d.rgb:                                      directory
 
grass/src/libes/g3d/snap.rgb:                                SGI image data, RLE, 3-D, 573 x 372, 3 channels
 
grass/src/general/g.help/help/17.manual/Help.pages/d.rgb:    ASCII English text
 
grass/src/general/g.help/help/17.manual/Help.pages/i.his.rgb: ASCII text
 
grass/src/general/g.help/help/17.manual/Help.pages/r.his.rgb: ASCII text
 
grass/src/tcltkgrass/module/d.rgb:                            ASCII text
 
grass/src/tcltkgrass/module/i.his.rgb:                        ASCII text
 
grass/src.contrib/GMSL/NVIZ2.2/TOGL/apps/ben.rgb:            SGI image data, RLE, 3-D, 133 x 158, 3 channels
 
grass/locale/ru/tcltkgrass/module/d.rgb:                      ISO-8859 text
 
grass/locale/ru/tcltkgrass/module/i.his.rgb:                  ISO-8859 text
 
grass/unused/tcltkgrass/module/d.rgb:                        ASCII English text
 
grass/unused/tcltkgrass/module/i.his.rgb:                    ASCII English text
 
grass6/lib/g3d/snap.rgb:                                      SGI image data, RLE, 3-D, 573 x 372, 3 channels
 
grass6/display/d.rgb:                                        directory
 
grass6/scripts/i.landsat.rgb:                                directory
 
grass6/scripts/i.landsat.rgb/i.landsat.rgb:                  Bourne shell script text executable
 
grass6/imagery/i.his.rgb:                                    directory
 
-> text/plain / image/x-rgb
 
 
ros: chemical/x-rosdal
 
grass/src/raster/wildfire/src/r.ros: directory
 
grass/src/tcltkgrass/module/r.ros:  ASCII English text
 
grass6/raster/wildfire/r.ros:        directory
 
-> text/plain
 
 
rtf: application/rtf
 
sh: text/x-sh
 
 
? src: application/x-wais-source
 
grass6/lib/init/grass-run.src:        POSIX shell script text executable
 
grass6/lib/init/grass.src:            POSIX shell script text executable
 
grass6/binaryInstall.src:            POSIX shell script text executable
 
grass/src/general/init/grass.src:    POSIX shell script text executable
 
grass/src/tcltkgrass/gis_set.tcl.src: ASCII English text
 
grass/binaryInstall.src:              POSIX shell script text executable
 
-> src: text/plain
 
 
? t: application/x-troff
 
grass6/swig/perl/t/R_slope_aspect.t: ASCII English text
 
-> t: text/plain
 
 
tcl: text/x-tcl
 
tex: text/x-tex
 
tgz: application/x-gtar
 
tiff: image/tiff
 
txt: text/plain
 
xbm: image/x-xbitmap
 
 
? xyz: chemical/x-xyz
 
grass6/scripts/r.out.xyz:                        setgid directory
 
grass6/scripts/r.out.xyz/r.out.xyz:              POSIX shell script text executable
 
grass6/raster/r.in.xyz:                          setgid directory
 
grass/src/raster/r.out.xyz:                      setgid directory
 
grass/src/tcltkgrass/module/r.out.xyz:          ASCII text
 
-> xyz: text/plain
 
  
# Instead, build a props file for use with the '--auto-props=FILE' option.
+
For text files are used <tt>keywords=Author Date Id Revision</tt>, in detail:
echo "[auto-props]" > propsfile-g5
 
sed -e 's%: \(text/.*\)% = svn:eol-style=native;svn:keywords=Author Date Id Revision;svn:mime-type=\1%' \
 
-e 's/^/*./' -e 's/: / = svn:mime-type=/' step6-g5 >> propsfile-g5
 
 
echo "[auto-props]" > propsfile-g6
 
sed -e 's%: \(text/.*\)% = svn:eol-style=native;svn:keywords=Author Date Id Revision;svn:mime-type=\1%' \
 
-e 's/^/*./' -e 's/: / = svn:mime-type=/' step6-g6 >> propsfile-g6
 
  
Remove mime-type:text/*
+
:* [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]
  
cat propsfile-g6 | sed -e 's/svn:mime-type=text\/.*//g' > propsfile-g6-1
+
<!-- &rarr; '''[http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/?root=grass-svn2 grass-svn2]''' -->
cat propsfile-g5 | sed -e 's/svn:mime-type=text\/.*//g' > propsfile-g5-1
 
  
#Finish the generation of propsfile
+
=== GRASS 7 development notes ===
sed -re 's/(.*\.([^.]*$))/\2 \1/' -e 's/^([^.]*)$/\1 \1/' step5-g6 | sort | \
 
sed -e 's/^[^ ]* //' -e 's%$% = svn:eol-style=native;svn:keywords=Author Date Id Revision%' >> propsfile-g6-1
 
 
#Finish the generation of propsfile
 
sed -re 's/(.*\.([^.]*$))/\2 \1/' -e 's/^([^.]*)$/\1 \1/' step5-g5 | sort | \
 
sed -e 's/^[^ ]* //' -e 's%$% = svn:eol-style=native;svn:keywords=Author Date Id Revision%' >> propsfile-g5-1
 
  
Files are available [http://josef.fsv.cvut.cz/~landa/grass-cvs2svn here].
+
[[Image:Grass7-development-svn.png|center]]
  
 
== External links ==
 
== External links ==
Line 1,014: Line 86:
 
* [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://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 1,023: Line 96:
  
 
[[Category:Development]]
 
[[Category:Development]]
 +
[[Category:Historic]]

Latest revision as of 04:39, 26 January 2013

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.

Meta

October 2007: It has been decided to open the SVN at OSGeo

Basic

  • The SVN command line interface is just like CVS, many tasks are identical - just change the program name from cvs to svn.

GRASS CVS repository structure

/grass-cvs
|
+---/grass
|
+---/grass51
|
+---/grass6
|
+---/grass_doc
|
+---/libgrass
|
+---/newsletter
|
+---/programgrass50
|
+---/web

GRASS OSGeo SVN repository structure

See Discussion page for details.

/grass-svn
|
+---/grass
|    |
|    +---/trunk (grass6 CVS HEAD)
|    |
|    +---/branches
|    |    |
|    |    +---/releasebranch_5_x (note: 5_5 based on grass5 CVS HEAD)
|    |    |
|    |    +---/releasebranch_6_x
|    |
|    +---/tags
|
|---/grass-addons
|
+---/grass-web
|    |
|    +---/trunk

Notes:

  • grass51, grass_doc, libgrass and programgrass50 are dead, will be not migrated
  • grass migrated as grass/branches/releasebranch_5_5
  • web migrated as grass-web
  • newsletter will be merged with OSGeo newsletter repository
  • wxPython GUI moved from grass-addons to grass code base (grass/gui/wxpython)
  • gui/wxpython/screenshots removed, can be part of grass-addons (e.g. grass-addons/screenshots/wxpython)

Scripts:

For text files are used keywords=Author Date Id Revision, in detail:


GRASS 7 development notes

Grass7-development-svn.png

External links

SVN hosting

There are two main options to host the new SVN repository.