Skip to content

Commit 08413c5

Browse files
git migration package (#74)
* git migration package * write log files * fix linter errors * remove trailing space * fix um10.2 release tag in jules * include a paralle version of the script + address review suggestions * remove training space in markdown * refactor migration script * update README and fix minor bug in the script * remove markdown trailing spaces * Update git-migration/config.json done. Co-authored-by: James Bruten <[email protected]> --------- Co-authored-by: James Bruten <[email protected]>
1 parent e7eae9e commit 08413c5

File tree

3 files changed

+862
-0
lines changed

3 files changed

+862
-0
lines changed

Diff for: git-migration/README.md

+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
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

Comments
 (0)