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

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

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