============================= 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 ~~~~~~~~~~~~ .. code-block:: 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 .. code-block:: 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/* .. code-block:: [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 .. code-block:: git svn fetch .. code-block:: git tag -a -m "Ec-earth SVN root" ecearth-svn-root $(git rev-list --max-parents=0 HEAD) Get upstream code ~~~~~~~~~~~~~~~~~ .. code-block:: 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: .. code-block:: 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: .. code-block:: 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: .. code-block:: git tag -a -m "Ec-earth vendor commit 1, r2539" ecearth-vendor-1-r2539 0953fc25c188576b311fe4d2b329a61d6bed0923 for xios-2.5: .. code-block:: 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 .. code-block:: 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: .. code-block:: git reset --hard 56033441cd54b273e4dda6e6862b9646d5a45b86 git merge ecearth-vendor-2-r7682 Graft development branches (check that counting commits is appropriate first!) .. code-block:: graft-dev-branches.sh Perform any appropriate merges for other branches, e.g. for oifs-43r3: .. code-block:: 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.: .. code-block:: 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. .. code-block:: 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 .. code-block:: 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 .. code-block:: 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