-
Notifications
You must be signed in to change notification settings - Fork 0
Merging and Updating the SVN Repository From Fortuna to Ganymed
This page will detail information about the SVN repository
First, svn copy the trunk (or another branch) into a new branch:
svn copy http://geos5.org/svn/trunk http://geos5.org/svn/branches/Ganymed-1_0_p4 -m "geos: created Ganymed-1_0_p4 branch"
Note that this is just a copy, so that means the Ganymed-1_0_p4 branch isn't actually Ganymed-1_0_p4 yet.
cd /path/to/svn/directory
ls
branches/ tags/ trunk/
cd branches/
svn checkout http://geos5.org/svn/branches/Ganymed-1_0_p4
This is a bit "belt-and-suspenders", but to be sure you don't muck up the "merge" from CVS to SVN, I made a copy of the new branch:
cp -a Ganymed-1_0_p4 Ganymed-1_0_p4-SAVE
The next step is to check out the tag that will become the new branch:
cd /path/to/cvs/directory
mkdir Ganymed-1_0_p4
cd Ganymed-1_0_p4
cvs co -r Ganymed-1_0_p4 Ganymed
Next, in the CVS branch, run the HandleCopyright.py script:
cd /path/to/cvs/directory/Ganymed-1_0_p4/GEOSagcm/src
HandleCopyright.py -p .
At the moment, we *think* the copyright script correctly handles all files, but the proof will be when you try and build the "copyrighted" code. The files that have the greatest chance of getting screwed up are .h files since some in the GEOS-5 GCM are .h files that contain C code (mainly in GFDL_fms) and most are .h files that contain Fortran code.
A list of these files retrieved by cvscmp Ganymed-1_0_p4:
Applications/GEOSgcm_App/fvcore_layout.rc.tmpl
Applications/GEOSgcm_App/gcm_archive.j.tmpl
Applications/GEOSgcm_App/gcm_plot.tmpl.tmpl
Applications/GEOSgcm_App/gcm_post.j.tmpl
Applications/GEOSgcm_App/gcm_regress.j.tmpl
Applications/GEOSgcm_App/gcm_run.j.tmpl
Applications/GEOSgcm_App/scm_util/MERRAobsys.rc
Applications/GEOSgcm_App/scm_util/README_scm_MERRA
Applications/GEOSgcm_App/scm_util/getter.j
Applications/GEOSgcm_App/scm_util/watcher.j
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/CARMAchem_GridComp/CARMA/source/base/sulfate.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/CARMAchem_GridComp/CARMA/tests/carma_sulfategrowtest.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/CARMAchem_GridComp/CARMA/tests/read_cldicetest.pro
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/CARMAchem_GridComp/CARMA/tests/read_sulfategrowtest.pro
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/chem_update.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/grav_set_update.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/qj_update.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/qk_update.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/sad_update.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiChemistry/strat_loss.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiEmission/harvard/emiss_soil.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiEmission/ioEmission/ReadVegLaiData_mod.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/GMIchem_GridComp/GMI_GridComp/GmiEmission/lightning/emiss_lightning.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/GNUmakefile
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/SC_DataMod.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/doy.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/fixSSG.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/interp3OP.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/listClim.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/listInput.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/listRates.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/listSpecies.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/ratecal.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/rdChemFiles.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/setmcor.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSchem_GridComp/StratChem_GridComp/SC_GridComp/tables_interp.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSgwd_GridComp/geopotential.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsatsim_GridComp/tauir.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsatsim_GridComp/tausw.F
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsolar_GridComp/gettau.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/mk_restarts/MAPL_Hash.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/mk_restarts/hash.c
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/mk_restarts/mk_lai_green_clim
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/GEOSland_GridComp/GEOScatch_GridComp/mk_restarts/mk_lai_green_clim.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Shared/Raster/data/CatchData.tar.gz
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Shared/Raster/src/MAPL_Hash.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Shared/Raster/src/MAPL_Sort.F90
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Shared/Raster/src/hash.c
GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSsurface_GridComp/Shared/Raster/src/sort.c
GMAO_Shared/GEOS_Util/plots/nettoa/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/nettoac/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/olr/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/olrc/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/olrcf/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/osr/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/osrc/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/plots/osrcf/VERIFICATION.CERES.rc
GMAO_Shared/GEOS_Util/post/rs_vinterp.F
GMAO_Shared/MAPL_Base/MAPL_ArthParser.F90
GMAO_Shared/MAPL_Base/MAPL_stubs2.F90
Put these in a file and run:
$ cd /path/to/svn/branches/Ganymed-1_0_p4/src
$ foreach line ( `cat ~/filesinFortunanotinGanymed.txt` )
svn delete $line
end
However, there are more that will be around as well. One way to find these is:
diff -qr --exclude='.svn' --exclude='CVS' /path/to/svn/branches/Ganymed-1_0_p4/src/ /path/to/cvs/Ganymed-1_0_p4/GEOSagcm/src. | grep Only
and then manually remove them. Tedious.
Using plain ol' cp, copy the copyrighted CVS into the SVN directory:
cd /path/to/svn/directory/branches/Ganymed-1_0_p4/src
cp -rv /path/to/cvs/directory/Ganymed-1_0_p4/GEOSagcm/src/* .
Now remove the CVS directories using find:
find . -type d -name 'CVS' -exec rm -rf {} +
Some files in GEOS-5 already have copyrights, so we shouldn't copyright those.
FMS has a copyright, so we can strip ours from that:
cd /path/to/svn/directory/branches/Ganymed-1_0_p4/src
HandleCopyright.py -s -p GMAO_Shared/GFDL_fms/shared/
Using grep, the files that don't have a copyright seem to be (files in bold):
$ cd GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSsatsim_GridComp/
$ HandleCopyright.py -s -p .
$ grep -iL copyright * | grep -v svn
actsim
cmor
geos5_cosp_const.F90
geos5_read.f90
GEOS_SatsimGridComp.F90
GNUmakefile
llnl
mcai.data
quickbeam
So, we strip the copyright from all the files and add a copyright to ours:
HandleCopyright.py -s -p .
HandleCopyright.py -f geos5_cosp_const.F90
HandleCopyright.py -f geos5_read.f90
HandleCopyright.py -f GEOS_SatsimGridComp.F90
HandleCopyright.py -f GNUmakefile
HandleCopyright.py -f mcai.data
RRTMG also is external code. So remove the copyright from all the files in the directory, but then re-copyright the GNUmakefiles:
cd GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSphysics_GridComp/GEOSradiation_GridComp/GEOSirrad_GridComp
HandleCopyright.py -s -p RRTMG/
HandleCopyright.py -f RRTMG/GNUmakefile
HandleCopyright.py -f RRTMG/rrtmg_lw/GNUmakefile
HandleCopyright.py -f RRTMG/rrtmg_lw/gcm_model/GNUmakefile
HandleCopyright.py -f RRTMG/rrtmg_lw/gcm_model/modules/GNUmakefile
HandleCopyright.py -f RRTMG/rrtmg_lw/gcm_model/src/GNUmakefile
NOTE
NOTE
NOTE
NOTE
NOTE
NOTE
We must "stub out" nh_core.F90 in the FV3 code on the SVN. To do so, we leave only the interfaces and nothing else.
$ cd GEOSgcs_GridComp/GEOSgcm_GridComp/GEOSagcm_GridComp/GEOSsuperdyn_GridComp/FVdycoreCubed_GridComp/fvdycore/model
$ cp ~/nh_core.F90.stubs.forG10p4 nh_core.F90
Now check to make sure no code is there!
You can see all the files that must be added by doing a:
cd /path/to/svn/directory/branches/Ganymed-1_0_p4/src
svn status | grep "^?"
What we need to do is add those:
svn add `svn status | grep "^?" | awk '{print $2}'`
CHECK IT!
svn commit -m "geos: Update to code from Ganymed-1_0_p4 CVS checkout"
Now make sure the branch can actually be built on discover:
cd /path/to/model/directory
mkdir Ganymed-1_0_p4-SVN
cd Ganymed-1_0_p4-SVN
svn checkout http://geos5.org/svn/branches/Ganymed-1_0_p4 GEOSagcm
cd GEOSagcm/src
make install |& tee make.log
If there are issues, fix them. Most likely ones are g5_modules isn't quite right, or a copyright was put in in the wrong format. Make note of the latter issues since the HandleCopyright.py script needs to handle them correctly.
Make sure to commit all changes to the SVN repo.
When you do a test build, you might find there are lots of files that appear with an svn status. To ignore them, create a file called ignore-from-svn.txt which has:
*.d
*.mod
*.x
*.xx
*___.h
*___.F90
*___.rc
Then, on the src/ directory do:
cd /path/to/checkout/directory/Fortuna-2_5_p6/GEOSagcm
svn propset -R svn:ignore -F ~/ignore-from-svn.txt src
svn commit
This might not be needed if svn is keeping properties correctly.
Once the code builds, if it's not a feature branch, but the latest code, this should be merged to trunk. In this case, we're going to use old-style merges. In order to do so, we need to know the revision we copied from the trunk, and the revision that is latest on our branch:
$ cd /path/to/svn/directory/branches/Ganymed-1_0_p4
$ svn update
At revision 77.
$ svn log --stop-on-copy
------------------------------------------------------------------------
r77 | geos | 2013-01-29 13:24:01 -0500 (Tue, 29 Jan 2013) | 4 lines
geos: Strip copyright from .AGCM_VERSION
Fix HISTORY.AGCM.rc.tmpl's handling of GOCART
------------------------------------------------------------------------
r76 | geos | 2013-01-29 11:40:35 -0500 (Tue, 29 Jan 2013) | 2 lines
geos: Strip copyright from ChangeLog
------------------------------------------------------------------------
r75 | geos | 2013-01-29 11:37:59 -0500 (Tue, 29 Jan 2013) | 2 lines
geos: path_names files in GFDL_fms and FV3 can't have copyright notices
------------------------------------------------------------------------
r74 | geos | 2013-01-29 11:07:29 -0500 (Tue, 29 Jan 2013) | 1 line
geos: Update to code from Ganymed-1_0_p4 CVS checkout
------------------------------------------------------------------------
r73 | geos | 2013-01-29 10:32:05 -0500 (Tue, 29 Jan 2013) | 2 lines
geos: Remove files that were in Fortuna-2_5_p6 but are not in Ganymed-1_0_p4
------------------------------------------------------------------------
r72 | geos | 2013-01-29 09:36:57 -0500 (Tue, 29 Jan 2013) | 1 line
geos: created Ganymed-1_0_p4 branch from trunk at Fortuna-2_5_p6 (revision 71)
------------------------------------------------------------------------
Note the value of the revision that was on trunk when we branched. Now we need to do the merge on the trunk and take all updates since that on our branch:
$ cd /path/to/svn/directory/trunk
$ svn update
At revision 77.
So, we have to merge from revision 72 to revision 77:
$ svn merge -r 72:77 http://geos5.org/svn/branches/Ganymed-1_0_p4
--- Merging r73 through r77 into '.':
U src/g5_modules
U src/Config/protex
U src/Config/GMAO_base.mk
...
Now we need to commit with a VERY SPECIFIC MESSAGE so that if there are any updates on the branch, we can correctly merge them to trunk.
$ svn status
$ diff /path/to/svn/directory/trunk/src /path/to/svn/directory/branches/Ganymed-1_0_p4/src
$ svn commit -m "geos: Merged branches/Ganymed-1_0_p4 changes r72:77 into the trunk."
$ cd /path/to/svn/directory/trunk
$ svn update
At revision 78.
$ svn merge --reintegrate http://geos5.org/svn/branches/Ganymed-1_0_p4@HEAD
$ svn commit -m "geos: Merge branches/Ganymed-1_0_p4 into trunk using --reintegrate at revision 78"
Now restore the branch as said in the svn redbook:
$ svn delete http://geos5.org/svn/branches/Ganymed-1_0_p4 -m "Remove reintegrated branches/Ganymed-1_0_p4"
Committed revision 80.
$ svn copy http://geos5.org/svn/trunk http://geos5.org/svn/branches/Ganymed-1_0_p4 -m "geos: Recreate branches/Ganymed-1_0_p4 with history from trunk@HEAD"
Committed revision 82.
svn copy http://geos5.org/svn/trunk http://geos5.org/svn/tags/Ganymed-1_0_p4 -m "geos: Create Ganymed-1_0_p4 tag"
diff -r --exclude=".svn" sub/dir/one sub/dir/two
Category:SI Team Category:SVN