Subversion to Git Migration
Sources Dir
Starting point
[x] amip-forcing
[x] config-build.xml
[ ] lpjg
[x] nemo-3.6
[x] oasis3-mct
[x] oifs-40r1
[x] runoff-mapper
[x] (tm5mp will come as part of OpenIFS and we’ll ignore it here completely)
[x] util
[x] xios-1.0
02-0e99c5326c0837eb10754c1df5b83f1b2568b71c
+platform
07-3857cfcd2694383d4e866459a5c6f71df64c1be8
-nemo-3.6
+nemo-4.0
-oasis3-mct
+oasis3-mct-4.0
-xios-1.0
+xios-2.5
08-d3f1c33b82eff766dbd44041dd16fe4639029df4
-config-build.xml
-platform
09-91fbfc9d1d43bb6b8df8834a81f8ab26b8c49ae9
-nemo-4.0
+nemo-4.0.1
10-991eae34132440ea531851f7f7117cd8e8a408d6
-oifs-40r1
+se
11-96aa8182c8c25a68cba2fc1c8f9fd4570d57fdc5
+oifs-43r3
Vendored Projects
lpj-guess (svn, )
nemo (svn, https://forge.ipsl.jussieu.fr/nemo/svn/NEMO/releases/r4.0/)
oasis (git, https://gitlab.com/cerfacs/oasis3-mct.git)
openifs (git, https://git.ecmwf.int/scm/oifs/oifs40r1.git)
(tm5-mp (moving to git, svn, https://dev.knmi.nl/projects/tm5mp/repository))
xios (svn, https://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk/)
OpenIFS
Get our code
git svn clone \
--authors-file=/home/a002160/Projects/ec_earth/git-svn/migration/authors \
--prefix=svn/ \
--trunk=trunk/sources/oifs-40r1 \
https://svn.ec-earth.org/ecearth4 \
oifs-40r1
branches = branches/development/2019/*/sources/oifs-40r1:refs/remotes/svn/development/2019/*
branches = branches/development/2020/*/sources/oifs-40r1:refs/remotes/svn/development/2020/*
branches = branches/development/2021/*/sources/oifs-40r1:refs/remotes/svn/development/2021/*
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[svn-remote "svn"]
url = https://svn.ec-earth.org/ecearth4
fetch = trunk/sources/oifs-40r1:refs/remotes/svn/trunk
branches = branches/development/2019/*/sources/oifs-40r1:refs/remotes/svn/development/2019/*
branches = branches/development/2020/*/sources/oifs-40r1:refs/remotes/svn/development/2020/*
branches = branches/development/2021/*/sources/oifs-40r1:refs/remotes/svn/development/2021/*
[svn]
authorsfile = /home/a002160/Projects/ec-earth/ec-earth4-git-migration/doc/authors.txt
git svn fetch
git tag -a -m "Ec-earth SVN root" ecearth-svn-root $(git rev-list --max-parents=0 HEAD)
Get upstream code
git remote add upstream https://git.ecmwf.int/scm/oifs/oifs40r1.git
git fetch --all --prune --tags
Bring the two together
Identify vendor points in upstream and tag them:
for oifs-40r1:
git tag -a -m "Ec-earth vendor commit 1" ecearth-vendor-1 3423dc8b1f5a07a623fb6c9a7c235d58bbb323c5
git tag -a -m "Ec-earth vendor commit 2" ecearth-vendor-2 4cb57e5a1a28e76bbbb4273ad0835fb5e50b9a01
git tag -a -m "Ec-earth vendor commit 3" ecearth-vendor-3 f4add5078091c68fcdaddeae07c9d66ecb8efec4
git tag -a -m "Ec-earth vendor commit 4" ecearth-vendor-4 74cfc72b5f182594090f9a1abe17e9f0cc68640e
git tag -a -m "Ec-earth vendor commit 5" ecearth-vendor-5 27cc6cfd539e35da172b6b6d78032f2b7cc68ea1
git tag -a -m "Ec-earth vendor commit 6" ecearth-vendor-6 27cc6cfd539e35da172b6b6d78032f2b7cc68ea1
for oifs-43r3:
git tag -a -m "Ec-earth vendor commit 1, r7681" ecearth-vendor-1-r7681 c0f9c645d32982eaf4f68b9b3a78d34260d3af50
git tag -a -m "Ec-earth vendor commit 2, r7682" ecearth-vendor-2-r7682 29d0fccccf034f4b30199ee2216f42c76d9952a4
git tag -a -m "Ec-earth vendor commit 3, r7970" ecearth-vendor-3-r7970 cbef1ea8c8ea207ac3fa07c85b03b9733e62de1e
git tag -a -m "Ec-earth vendor commit 4, r8054" ecearth-vendor-4-r8054 d26557db9ad4b7a2b653dceede611015dfc9dd45
git tag -a -m "Ec-earth vendor commit 5, r8153" ecearth-vendor-5-r8153 5c0ba3a103b80a072d4b4666dec2ca96ad7eaacd
for xios-1.0:
git tag -a -m “Ec-earth vendor commit 1, r2539” ecearth-vendor-1-r2539 0953fc25c188576b311fe4d2b329a61d6bed0923
for xios-2.5:
git tag -a -m "Ec-earth vendor commit 1, r5859" ecearth-vendor-1-r5859 9a09a1b2263a0ad11484d8a093bd59ebc3e11753
git tag -a -m "Ec-earth vendor commit 2, r6095" ecearth-vendor-2-r6095 b41468b596d512578f8677c5b565741bd9dc0b38
git tag -a -m "Ec-earth vendor commit 3, r6305" ecearth-vendor-3-r6305 273865766d8b9ab889be2993951a06d391d8d779
git tag -a -m "Ec-earth vendor commit 4, r6753" ecearth-vendor-4-r6753 e8b7b99863313a3d83b926423331efcdcca274fe
Graft main onto appropriate vendor point
git rebase -X theirs ecearth-vendor-6
git tag -a -m "Ec-earth grafted svn root" ecearth-grafted-svn-root \
main~$(git rev-list ecearth-svn-root..svn/trunk |wc -l)
Perform any appropriate merges for main, e.g. for oifs-43r3:
git reset --hard 56033441cd54b273e4dda6e6862b9646d5a45b86
git merge ecearth-vendor-2-r7682
Graft development branches (check that counting commits is appropriate first!)
graft-dev-branches.sh
Perform any appropriate merges for other branches, e.g. for oifs-43r3:
git checkout -b merge-helper
git reset --hard f9ca5bb136e8c57ea35b19752ebc741c647d161c
git merge -s ours ecearth-vendor-3-r7970
git rebase merge-helper development/2020/r7970-upgrade-to-oifs43r3v1
git checkout merge-helper
git reset --hard 054c06b4d73a638b0663db12b82efd23527ffc2e
git merge -s ours ecearth-vendor-4-r8054
git rebase merge-helper development/2020/r7970-upgrade-to-oifs43r3v1
git checkout merge-helper
git reset --hard 2eb5e30c97550447a989208d2d8155bc14be3e22
git merge -s ours ecearth-vendor-5-r8153
git rebase merge-helper development/2020/r7970-upgrade-to-oifs43r3v1
git branch -d merge-helper
Bring to Gitlab platform
Add gitlab remote and push main branch, e.g.:
git remote add origin https://git.smhi.se/ec-earth/vendor/openifs/oifs40r1.git
git checkout main
git push origin
Create local branches for upstream branches, e.g.
for BRANCH in $(git branch -r --list 'upstream/*') ; do LOCAL_BRANCH=$(echo $BRANCH |sed 's/^upstream/ecmwf/'); git checkout -b $LOCAL_BRANCH $BRANCH; done
Oasis
oasis (git, https://gitlab.com/cerfacs/oasis3-mct.git)
Nemo
Need to handle Nemo-3.6 and Nemo-4 separately due to drastically different repository layout, even though they live in the same repo.
Nemo-3.6
Identify vendor points
git tag -a -m "Ec-earth vendor commit 1, r9455" ecearth-vendor-1-r9455 059fe0610f034d917cd637f1fb543b9651e9a871
Missing Bits
Nemo-3.6
ARCH/*
CONFIG/*
EXTERNAL/svn_tools
NEMO
OPA_SRC/DIA/diaprod.F90
TOP_SRC/AGE
SETTE
TOOLS
COMPILE
bash-font-lock.el
template.sh
SIREN
cfg/dimension.cfg
doc/refman.pdf
src/docsrc/Image/boundary_NEATL36_70.png
Oasis
Doc sources
examples
make_dir stuff
oasisgui
OpenIFS-40r1
bin
examples
python
t21test
oifs-config.editme
Xios-1.0
arch/*.{env,fcm,path}
Main Sources
Prepare sources leaving out vendored projects
git svn clone --authors-file=/home/sm_klazi/authors.txt \
--prefix=svn/ \
--trunk=trunk \
--ignore-paths="^(?:trunk|branches/development/[0-9]*/[^/]+)/sources/(?:lpjg|nemo|oasis|oifs|tm5|xios)" \
https://svn.ec-earth.org/ecearth4