|
| 1 | +# Met Office Simulation Systems Git Migration Project |
| 2 | + |
| 3 | +This project is aimed to migrate the Met Office simulation systems repositories |
| 4 | +to Git ecosystem. See MetOffice/simulation-systems/discussions/337 for details. |
| 5 | + |
| 6 | + |
| 7 | +> [!IMPORTANT] Pre-requisites to run the migration script |
| 8 | +> - Read access to the Met Office Science Repository [MOSRS](https://code.metoffice.gov.uk/trac/home) or the Met Office internal mirror (`svn://fcm1`). |
| 9 | +> - Optional Write access to the [Met Office GitHub organisation](https://github.com/MetOffice) for push to remote (usually, an admin). |
| 10 | +> - Tools: [`fcm`](https://metomi.github.io/fcm/doc/user_guide/introduction.html), [`git`](https://git-scm.com), [`gitlify`](https://github.com/MetOffice/gitlify), [`jq`](https://jqlang.org), and [`gh`](https://cli.github.com) available on the system. |
| 11 | +
|
| 12 | +## Checklist |
| 13 | + |
| 14 | +1. Test `gitlify` translation tool |
| 15 | + - [x] Able to convert only svn trunk to Git. |
| 16 | + - [x] Able to map svn revisions to Git tag. |
| 17 | + - [x] Synchronise trunk updates locally in Git repositories. |
| 18 | + - [x] Set-up a (`scron`) job to update code/tags routinely. |
| 19 | + |
| 20 | +2. Create/update GitHub repositories under [MetOffice](https://github.com/MetOffice) |
| 21 | + - [ ] `svn:um/main` (@trunk) → [um](https://github.com/MetOffice/um) (@trunk) |
| 22 | + - [ ] `svn:um/aux` (@trunk) → [um_aux](https://github.com/MetOffice/um_aux) (@trunk) |
| 23 | + - [ ] `svn:um/meta` (@trunk) → [um_meta](https://github.com/MetOffice/um_meta) (@trunk) |
| 24 | + - [ ] `svn:um/doc` (@trunk) → [um_doc](https://github.com/MetOffice/um_doc) (@trunk) |
| 25 | + - [ ] Compress/convert large graphics in the repository consulting the authors, if possible. |
| 26 | + - [ ] Implement GitHub Action to build/deploy docs: test using [texlive docker image](https://hub.docker.com/r/texlive/texlive/tags?name=2018) |
| 27 | + - [ ] `svn:um/mule` (@trunk) → [mule](https://github.com/MetOffice/mule) (@trunk) |
| 28 | + - [ ] Contact [metomi](https://github.com/metomi/mule) owner to deprecate their repository. |
| 29 | + - [ ] `svn:gcom/main` (@trunk) → [gcom](https://github.com/MetOffice/gcom) (@trunk) |
| 30 | + - [ ] `svn:jules/main` (@trunk) → [jules](https://github.com/MetOffice/jules) (@trunk) |
| 31 | + - [ ] Check licence agreements, if going public. |
| 32 | + - [ ] Plan to migrate JULES documentation here. |
| 33 | + - [ ] `svn:socrates/main` (@trunk) → [socrates](https://github.com/MetOffice/socrates) (@trunk) |
| 34 | + - [ ] `svn:utils/shumlib` (@trunk) → [shumlib](https://github.com/MetOffice/shumlib) (@trunk) |
| 35 | + - [ ] - [ ] Contact [metomi](https://github.com/metomi/shumlib) owner to deprecate their repository. |
| 36 | + - [ ] `svn:ukca/main` (@trunk) → [ukca](https://github.com/MetOffice/ukca) (@trunk) |
| 37 | + - [ ] `svn:monc/casim` (@trunk) → [casim](https://github.com/MetOffice/casim) (@trunk) |
| 38 | + - [ ] `svn:moci/main` (@trunk) → [moci](https://github.com/MetOffice/moci) (@trunk) |
| 39 | + - [ ] `svn:lfric/LFRic` (@trunk) → [lfric_core](https://github.com/MetOffice/lfric_core) (@trunk) |
| 40 | + - [ ] Repository already exists: ask for admin access to the repository. |
| 41 | + - [ ] `svn:lfric_apps/main` (@trunk) → [lfric_apps](https://github.com/MetOffice/lfric_apps) (@trunk) |
| 42 | + - [ ] Propose `lfric_core` as a submodule in this repository? |
| 43 | + - [ ] Check `config.json` is correct and up-to-date with MOSRS revisions. |
| 44 | + |
| 45 | +3. General updated for all repositories |
| 46 | + - [ ] All _private_ with specific team access only. |
| 47 | + - [ ] `README.md` and Repository Description. |
| 48 | + - [ ] `LICENCE` |
| 49 | + - [ ] `CONTRIBUTING.md` (CLA) |
| 50 | + - [ ] Correct Copyright statements, particularly in planned open-source repositories. |
| 51 | + |
| 52 | +4. Testbed |
| 53 | + - [ ] Create additional `main` branches |
| 54 | + - [ ] Test Simulation System workflows with GitHub |
| 55 | + - [ ] Make sure tags/releases are still functional |
| 56 | + - [ ] Update Working practices |
| 57 | + - [ ] Allow limited number of developers to test their workflows |
| 58 | + - [ ] Add/update Templates |
| 59 | + |
| 60 | +5. During SRS freeze |
| 61 | + - [ ] Merge `trunk` in _future_ default (`main`) and delete `trunk` |
| 62 | + |
| 63 | +6. Update communication plan |
| 64 | + - [ ] Update [Simulation Systems Discussion](https://github.com/MetOffice/simulation-systems/discussions/337) |
| 65 | + - [ ] Engage in [Simulation Systems Q&A](https://github.com/MetOffice/simulation-systems/discussions/categories/questions-and-answers) |
| 66 | + |
| 67 | + |
| 68 | +## FAQ |
| 69 | + |
| 70 | +<details> |
| 71 | +<summary><b>How long it takes to convert svn repo to Git?</b></summary> |
| 72 | + |
| 73 | +The listing below shows the time taken to convert trunk-only branches and |
| 74 | +attach svn tags to the Git repository locally using `ssd_svn2git,sh` script. |
| 75 | + |
| 76 | + $ tail -n1 *.log |
| 77 | + ==> 20250330T025505_casim.log <== |
| 78 | + 2025-03-30 02:56:25 Done: casim in 00:01:20 |
| 79 | + |
| 80 | + ==> 20250330T025625_moci.log <== |
| 81 | + 2025-03-30 02:59:42 Done: moci in 00:03:17 |
| 82 | + |
| 83 | + ==> 20250330T025942_jules.log <== |
| 84 | + 2025-03-30 03:14:50 Done: jules in 00:15:08 |
| 85 | + |
| 86 | + ==> 20250330T031450_socrates.log <== |
| 87 | + 2025-03-30 03:17:04 Done: socrates in 00:02:14 |
| 88 | + |
| 89 | + ==> 20250330T031704_ukca.log <== |
| 90 | + 2025-03-30 03:18:06 Done: ukca in 00:01:02 |
| 91 | + |
| 92 | + ==> 20250330T031806_shumlib.log <== |
| 93 | + 2025-03-30 03:19:40 Done: shumlib in 00:01:34 |
| 94 | + |
| 95 | + ==> 20250330T031940_mule.log <== |
| 96 | + 2025-03-30 03:24:19 Done: mule in 00:04:39 |
| 97 | + |
| 98 | + ==> 20250330T032419_um_aux.log <== |
| 99 | + 2025-03-30 03:29:52 Done: um_aux in 00:05:33 |
| 100 | + |
| 101 | + ==> 20250330T032952_um_doc.log <== |
| 102 | + 2025-03-30 03:42:31 Done: um_doc in 00:12:39 |
| 103 | + |
| 104 | + ==> 20250330T034231_um_meta.log <== |
| 105 | + 2025-03-30 03:46:47 Done: um_meta in 00:04:16 |
| 106 | + |
| 107 | + ==> 20250330T034647_um.log <== |
| 108 | + 2025-03-30 05:04:04 Done: um in 01:17:17 |
| 109 | + |
| 110 | + ==> 20250330T050404_gcom.log <== |
| 111 | + 2025-03-30 05:06:17 Done: gcom in 00:02:13 |
| 112 | + |
| 113 | + ==> 20250330T050617_lfric_apps.log <== |
| 114 | + 2025-03-30 05:11:44 Done: lfric_apps in 00:05:27 |
| 115 | + |
| 116 | + ==> 20250330T051145_lfric_core.log <== |
| 117 | + 2025-03-30 05:48:32 Done: lfric_core in 00:36:48 |
| 118 | +</details> |
| 119 | + |
| 120 | +<details> |
| 121 | +<summary><b>What happens to a tag if the corresponding branch gets deleted?</b></summary> |
| 122 | +A branch is simply a way to track a collection of commits. The tag and commit |
| 123 | +would stull exist if the branch is deleted. Ref: https://github.com/orgs/community/discussions/23918. |
| 124 | +</details> |
| 125 | + |
| 126 | +<details> |
| 127 | +<summary><b>When will the developers get access to the GitHub repositories</b></summary> |
| 128 | +Please refer to the timeline in [Simulation Systems Discussion](https://github.com/MetOffice/simulation-systems/discussions/337). |
| 129 | +We will announce the opportunity to participate during the later part of migration testbed. |
| 130 | +</details> |
0 commit comments