Recent Releases of mepo
mepo - v2.4.0
Ahead/behind information in mepo status
- If you are working on a shared development branch and run a mepo fetch, the status will now show you if you are behind and/or ahead of that branch. For example:
GEOSgcm_GridComp | (b) feature/new-science [behind: 1] [ahead: 1] - Added
blobless:option tocomponents.yamlto force blobless cloning for a repo
From CHANGELOG.md
Added
- Added ahead/behind info to
mepo status - Added
blobless:option tocomponents.yamlto force blobless cloning for a repo
Changed
- Moved coloring of
git statusoutput fromsrc/mepo/git.pytosrc/mepo/command/status/py - Streamlined output processing of
git status - Migrated mepo management from
ryetouv
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.3.2...v2.4.0
- Python
Published by pchakraborty about 1 year ago
mepo - v2.3.2
From CHANGELOG.md
Fixed
- Fixed checkout command to use --recurse-submodules if component has submodules
What's Changed
- Fix issue with checkout and submodules by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/359
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.3.1...v2.3.2
- Python
Published by pchakraborty about 1 year ago
mepo - Allow for fixture without develop key
From CHANGELOG.md
Fixed
- Fixed
cloneto allow for fixtures without adevelop:key incomponents.yaml
What's Changed
- Fixes #355. Allow for fixture without develop key by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/356
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.3.0...v2.3.1
- Python
Published by pchakraborty about 1 year ago
mepo - Make mepo status serial by default
This release changes mepo status to be a serial command by default rather than using multiprocessing. It was found at NAS that mepo status was acting fork-bomb-like spawning many, many processes. This isn't really needed anyway for status in almost any situation.
If users want the old behavior, they can add the --parallel option.
From CHANGELOG.md
Changed
- Moved
mepo statusandmepo restore-stateto default to their serial variants rather than parallel by default. At the same time, we remove the--serialoption from these commands and add a--paralleloption if users want to run them in parallel.
What's Changed
- v2: Default status and restore-state to serial by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/338
- Updated version to 2.3.0 by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/345
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.2.1...v2.3.0
- Python
Published by mathomp4 over 1 year ago
mepo - Fixes for less used options of clone
This version of mepo has bug fixes for lesser-used options of mepo clone, allrepos and registry
From CHANGELOG.md
Fixed
- Fixed bugs in the lesser used options of
mepo clone,allreposandregistry
Added
- Added tests for
mepo clone --allreposandmepo clone --registry
What's Changed
- Fixes for less used options of "mepo clone" by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/335
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.2.0...v2.2.1
- Python
Published by mathomp4 over 1 year ago
mepo - v1: Make mepo status serial
This is a release of mepo v1. It changes mepo status to be a serial command rather than using multiprocessing. It was found at NAS that mepo status was acting fork-bomb-like spawning many, many processes. This isn't really needed anyway for status so we make it serial based on code in mepo v2
From CHANGELOG.md
Changed
- Made
mepo statusserial by default due to odd fork-bomb-like behavior on some systems
What's Changed
- v1: Make mepo status serial by default by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/336
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.52.0...v1.53.0
- Python
Published by mathomp4 over 1 year ago
mepo - Branches no longer detached and display stashes
This version of mepo has the following changes:
- Branches cloned are no longer put in detached head state
- Added ability to print number of stashes in
mepo status
along with other backend changes.
From CHANGELOG.md
Added
- Hidden option
--locationfor mepo that returns the path to the mepo directory - Added ability to print number of stashes in
mepo status - Added new tests for
mepo clone
Changed
- Removed legacy
bindirectory - Checked out branches are no longer in 'detached head' state
What's Changed
- Merge develop into main by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/333
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.1.0...v2.2.0
- Python
Published by mathomp4 over 1 year ago
mepo - Store full remote URL in state file and other updates
This version of mepo has some backend changes. The most important is that the full path of remote url is now stored in the state file. This allows for reducing the number of git calls needed.
There is also some refactoring of code as well as added newly added tests and updates to documentation.
From CHANGELOG.md
Fixed
- Fixed mepo completion
Added
- Added ability to print version info via
mepo --version - Added install instructions for spack and brew tap
- Added tests for Registry and MepoComponent classes
Changed
- Full path of remote url is now stored in the state file
- Some refactor of component.py
- Removed MepoState dependency in git.py
What's Changed
- Added ability to print version info by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/309
- Add spack install instructions by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/310
- Update README by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/315
- Store complete remote url in state file by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/316
- Merge main into develop by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/317
- Merge develop into main by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/318
- Do a merge commit from main into develop by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/319
- Updated CHANGELOG.md by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/320
- Merge develop into main by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/321
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v2.0.0...v2.1.0
- Python
Published by mathomp4 over 1 year ago
mepo - Initial release of mepo 2
This is a major release of mepo that includes a number of changes to the codebase and the way mepo is used.
The most significant change is the conversion of mepo to a Python project. This change was made to improve the maintainability of the codebase and to make it easier to add new features in the future. The conversion to a Python project also allows for better integration with other Python tools and libraries. See this commit message for more information.
Internal State Change
This major version also introduces internal changes to mepo that end users might encounter. The main change is moving from a pickle format to a json format for the internal state of mepo. This change was made to improve the readability and extensibility of the state file.
For example, if a user has an existing clone of a mepo repository that was created with mepo version 1, when they run with mepo version 2, they will see a message like:
```
mepo status Checking status... Detected mepo1 style state Run
to permanently convert to mepo2 style GEOSfvdycore | (b) main env | (t) v4.29.0 (DH) cmake | (t) v3.45.1 (DH) ... ```
As the message says, the user can run mepo update-state to convert the state to mepo2 style (i.e., from pickle to json). Note that this is a one-way change!
macOS multiprocessing issue
If you have a mepo1 style state and you are on macOS, you may encounter an issue when running mepo status or mepo restore-state. For example:
```
mepo status Checking status... Detected mepo1 style state Run
to permanently convert to mepo2 style Process SpawnPoolWorker-2: Traceback (most recent call last): Process SpawnPoolWorker-5: Process SpawnPoolWorker-1: Traceback (most recent call last): Process SpawnPoolWorker-3: Traceback (most recent call last): File "/Users/mathomp4/.homebrew/brew/Cellar/python@3.12/3.12.4/Frameworks/Python.framework/Versions/3.12/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap self.run() ... ```
This seems to be a macOS issue with Python multiprocessing. The solution is to run mepo update-state to convert the state to mepo2 style. Then all works as expected:
```
mepo update-state Detected mepo1 style state Run
to permanently convert to mepo2 style
Converted mepo1 state to mepo2
mepo status Checking status... GEOSfvdycore | (b) main env | (t) v4.29.0 (DH) cmake | (t) v3.45.1 (DH) ecbuild | (t) geos/v1.3.0 (DH) GMAOShared | (t) v1.9.7 (DH) GEOSUtil | (t) v2.0.8 (DH) ... ```
Missing features
Note that at the moment the mepo completion scripts and mepo-cd scripts are not installed by default. This will be addressed in a future release.
From CHANGELOG.md
Added
pyproject.tomlto aid withpipinstallation.Engineering -- Formatting with Black -- Linting with Pylint -- Dependency management and packaging with Rye
Added tests to cover more
mepocommandsAdd new command
update-stateto permanently convert mepo1 style state to mepo2
Changed
Converted
mepoto a Python project via the following renaming -- Addedsrc/mepo/__init__.py-- Renamedmepo.d->src/mepo-- Renamedmepo.d/utest->tests-- Renameddoc-->docs-- Amepoconfig file is now called ameporegistry -- More code reorganizationHelper script
mepo, used for development, moved to thebindirectory.Added README for
docs/make_md_docs.pyscriptState: pickle format (mepo1 style) to json format (mepo2 style) -- If mepo1 style state is detected, print warning and suggest running
mepo update-state
What's Changed
- Make mepo a pip-installable Python project by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/269
- Fix small typo by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/271
- Patch for reading mepo1 state by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/279
- Python package with expanded testing by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/278
- Make doc generation work again by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/286
- Switch from Poetry to Rye for dependency management and packaging by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/290
- Some engineering by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/292
- Fixed a bug in mepo state creation during 'mepo update-state' by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/295
- Make mdutils a dev-dependency instead of a dependency by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/294
- A bug fix and '--serial' option for status and restore-state commands by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/296
- Version 2.0.0rc4 by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/297
- Add docs README, update main README by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/272
- Ready to release 2.0.0 by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/298
- Merge develop into main, for release (2.0.0) by @pchakraborty in https://github.com/GEOS-ESM/mepo/pull/300
- Add brew tap installation instructions by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/302
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.52.0...v2.0.0
- Python
Published by mathomp4 almost 2 years ago
mepo - Support for partial clones
This release adds support for partial clones with mepo clone. A new option --partial has three settings:
off: performs a "normal"git cloneblobless: performs a blobless clone viagit clone --filter=blob:nonetreeless: performs a treeless clone viagit clone --filter=tree:0
The default is tecnically none of these, but that is equivalent to off. The off option is mainly added here to allow overriding of any .mepoconfig setting (see below).
The motivation for this is that it has been noticed that clones of GEOS (mainly MAPL) are often extremely slow. For example:
❯ time git clone git@github.com:GEOS-ESM/MAPL.git MAPL-normal
Cloning into 'MAPL-normal'...
remote: Enumerating objects: 704212, done.
remote: Counting objects: 100% (271489/271489), done.
remote: Compressing objects: 100% (6882/6882), done.
remote: Total 704212 (delta 269709), reused 266119 (delta 264584), pack-reused 432723
Receiving objects: 100% (704212/704212), 997.08 MiB | 2.59 MiB/s, done.
Resolving deltas: 100% (694344/694344), done.
noglob git clone git@github.com:GEOS-ESM/MAPL.git MAPL-normal 95.46s user 13.88s system 24% cpu 7:17.37 total
This took over 7 minutes to clone!
However, git supports partial clones as detailed in this GitHub Blog post. Now, of the two, blobless clones are fairly safe and give you faster initial clone speed at the cost of slower operations after that. As a test:
❯ time git clone --filter=blob:none git@github.com:GEOS-ESM/MAPL.git MAPL-blobless-from-git
Cloning into 'MAPL-blobless-from-git'...
remote: Enumerating objects: 21299, done.
remote: Counting objects: 100% (3171/3171), done.
remote: Compressing objects: 100% (1324/1324), done.
remote: Total 21299 (delta 1972), reused 2989 (delta 1829), pack-reused 18128
Receiving objects: 100% (21299/21299), 20.80 MiB | 2.99 MiB/s, done.
Resolving deltas: 100% (13343/13343), done.
remote: Enumerating objects: 942, done.
remote: Counting objects: 100% (552/552), done.
remote: Compressing objects: 100% (500/500), done.
remote: Total 942 (delta 112), reused 126 (delta 50), pack-reused 390
Receiving objects: 100% (942/942), 1.85 MiB | 136.00 KiB/s, done.
Resolving deltas: 100% (249/249), done.
Updating files: 100% (1064/1064), done.
noglob git clone --filter=blob:none git@github.com:GEOS-ESM/MAPL.git 1.38s user 0.54s system 6% cpu 27.609 total
28 seconds!
Treeless clones are usually faster than blobless as you aren't just filtering out blobs but whole trees. But per the blog:
We strongly recommend that developers do not use treeless clones for their daily work. Treeless clones are really only helpful for automated builds when you want to quickly clone, compile a project, then throw away the repository. In environments like GitHub Actions using public runners, you want to minimize your clone time so you can spend your machine time actually building your software! Treeless clones might be an excellent option for those environments.
As there are possible scenarios with CI that this could be useful for, the option is added. As for speed:
❯ time git clone --filter=tree:0 git@github.com:GEOS-ESM/MAPL.git MAPL-treeless
Cloning into 'MAPL-treeless'...
remote: Enumerating objects: 6875, done.
remote: Counting objects: 100% (843/843), done.
remote: Compressing objects: 100% (730/730), done.
remote: Total 6875 (delta 124), reused 805 (delta 113), pack-reused 6032
Receiving objects: 100% (6875/6875), 2.24 MiB | 277.00 KiB/s, done.
Resolving deltas: 100% (757/757), done.
remote: Enumerating objects: 106, done.
remote: Counting objects: 100% (70/70), done.
remote: Compressing objects: 100% (66/66), done.
remote: Total 106 (delta 1), reused 19 (delta 0), pack-reused 36
Receiving objects: 100% (106/106), 37.34 KiB | 538.00 KiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 942, done.
remote: Counting objects: 100% (552/552), done.
remote: Compressing objects: 100% (500/500), done.
remote: Total 942 (delta 112), reused 126 (delta 50), pack-reused 390
Receiving objects: 100% (942/942), 1.85 MiB | 2.09 MiB/s, done.
Resolving deltas: 100% (249/249), done.
Updating files: 100% (1064/1064), done.
noglob git clone --filter=tree:0 git@github.com:GEOS-ESM/MAPL.git 0.45s user 0.25s system 4% cpu 15.950 total
16 seconds!
Along with this option, we also add a new .mepoconfig setting where one can add:
config
[clone]
partial = blobless
and blobless clones will be the default.
From CHANGELOG.md
Added
- Added new
--partialoption tomepo clonewith two settings:off,blobless, andtreeless. If you set,--partial=bloblessthen the clone will not download blobs by using--filter=blob:none. If you set--partial=treelessthen the clone will not download trees by using--filter=tree:0. Thebloblessoption is useful for large repos that have a lot of binary files that you don't need. Thetreelessoption is even more aggressive and SHOULD NOT be used unless you know what you are doing. The--partial=offoption allows a user to override the default behavior of--partialin.mepoconfigand turn it off for a run ofmepo clone. - Add a new section for
.mepoconfigto allow users to set--partialas a default formepo clone.
What's Changed
- GitFlow: Merge main into develop for hotfix by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/262
- Add support for partial clones by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/264
- Protect submodule repos from treeless, add off option by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/266
- GitFlow: Merge develop into main by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/265
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.51.1...v1.52.0
- Python
Published by mathomp4 over 2 years ago
mepo - Fix for ignore_submodules in older mepo clones
This patch release of mepo fixes an issue running mepo commands on older mepo clones made before v1.51.0 when ignore_submodules was added. Mea culpa.
From CHANGELOG.md
Fixed
- Fixes to allow mepo to work on older mepo clones that don't have ignore_submodules in their state
What's Changed
- Fixes for older mepo clones in re ignore_submodules by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/261
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.51.0...v1.51.1
- Python
Published by mathomp4 almost 3 years ago
mepo - Add ability to ignore submodules in diff and status
TL;DR This release adds a new field to components.yaml, ignore_submodules which when true will ignore submodules in the mepo status and mepo diff calls.
A mepo oddity occurs in GEOSgcm because of how CICE and icepack are handled.
Technically, icepack is a submodule of CICE in the repo (see https://github.com/GEOS-ESM/CICE) and git sees it as that. However, currently GEOS handles icepack as a separate repo (most likely for ease of development) but git doesn't really know this. So when you go to CICE in GEOS in a fresh clone you see:
```
$ git status
HEAD detached at geos/v0.0.2
Changes not staged for commit:
(use "git add
Submodules changed but not updated:
- icepack 81a7628...8d80ff5 (1): > Merge pull request #1 from GEOS-ESM/bugfix/zhaobin74/recompute-enthalpy
no changes added to commit (use "git add" and/or "git commit -a") ```
and since mepo status just sort of "echoes" status output with mepo status we see:
cice6 | (t) geos/v0.0.2 (DH)
| icepack: modified, not staged
So git says "something changed" but we want to ignore that in this case.
Thus, this PR adds a new field to components.yaml, ignore_submodules:
yaml
cice6:
local: ./src/Components/@GEOSgcm_GridComp/GEOSogcm_GridComp/GEOSseaice_GridComp/CICE_GEOSPlug/@cice6
remote: ../CICE.git
tag: geos/v0.0.2
develop: geos/develop
ignore_submodules: true
If this is true, then we add --ignore-submodules=all to underlying git calls when we run mepo diff and mepo status
From CHANGELOG.md
Added
- Added new
ignore_submodulesfield incomponents.yamlto allow ignoring submodules in a repo. Currently used forstatusanddiffcommands.
What's Changed
- Add ability to ignore submodules by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/258
- GitFlow: Merge Develop into main by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/259
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.50.0...v1.51.0
- Python
Published by mathomp4 almost 3 years ago
mepo - Add hashes option to status command
This release of mepo adds a new --hashes option for mepo status that displays the hashes of each repo:
❯ mepo status
Checking status...
MAPL | (b) main
ESMA_env | (t) v4.19.0 (DH)
ESMA_cmake | (t) v3.31.0 (DH)
ecbuild | (t) geos/v1.3.0 (DH)
❯ mepo status --hashes
Checking status...
MAPL | (b) main (1afeb43d6af485c6fbedd7ce72ccc1eec20a5c5a)
ESMA_env | (t) v4.19.0 (DH) (7a8e3b158967bf3144d396d836489f46888b7f56)
ESMA_cmake | (t) v3.31.0 (DH) (7dc4c819dc5169e6b887374aa0fa0a8f71846832)
ecbuild | (t) geos/v1.3.0 (DH) (4a8c91a579e112a6e2a5224068e95c3a8935204b)
From CHANGELOG.md
Added
- Command
statushas now a--hashesoption that list current HEAD hash for each component.
What's Changed
- Update zenodo.json by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/252
- Add
--hashesreading HEAD to get the current hash by @FlorianDeconinck in https://github.com/GEOS-ESM/mepo/pull/253 - Update changelog for 1.50 release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/254
- GitFlow: Merge Develop into main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/255
New Contributors
- @FlorianDeconinck made their first contribution in https://github.com/GEOS-ESM/mepo/pull/253
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.49.0...v1.50.0
- Python
Published by mathomp4 almost 3 years ago
mepo - Better mepo compare display
Previous to this release, if an original branch name is very long, this can cause odd output of mepo compare on narrow (relative to the branch name) terminals even if the repo wasn't changed. The compare command would use the maximum length of all repos, and not just those that changed.
With this fix, mepo compare will use only the repos that change to figure out how wide to make the output rather than all the branches on all the repos.
Of course, if you do mepo compare --all, it will base the output on all the repos as usual.
What's Changed
- Compare headers based on changed branch length by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/249
- GitFlow: Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/250
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.48.0...v1.49.0
- Python
Published by mathomp4 over 3 years ago
mepo - Add mepo reset command
This release adds a new mepo reset command:
```
❯ mepo reset -h
usage: mepo reset [-h] [-f] [--reclone] [-n]
Reset the current mepo clone to the original state.This will delete all subrepos and does not check for uncommitted changes! Must be run in the root of the mepo clone.
options: -h, --help show this help message and exit -f, --force Force action. --reclone Reclone repos after reset. -n, --dry-run Dry-run only ```
By default, it will not re-clone a repo and will require a user to answer another question to run (without force flag):
❯ mepo clone
Initializing mepo using components.yaml
ESMA_env | (t) v4.8.0
ESMA_cmake | (t) v3.21.0
ecbuild | (t) geos/v1.3.0
❯ mepo reset
Are you sure you want to reset the project? If so, type 'yes' and press enter. yes
Removing ESMA_cmake/ecbuild...done.
Removing ESMA_cmake...done.
Removing ESMA_env...done.
Removing .mepo...done.
❯ ls -1 ESMA_env | head -1
ls: ESMA_env: No such file or directory
You can do a reclone with --reclone:
❯ mepo clone
Initializing mepo using components.yaml
ESMA_env | (t) v4.8.0
ESMA_cmake | (t) v3.21.0
ecbuild | (t) geos/v1.3.0
❯ mepo reset --reclone -f
Removing ESMA_cmake/ecbuild...done.
Removing ESMA_cmake...done.
Removing ESMA_env...done.
Removing .mepo...done.
Re-cloning all subrepos
Initializing mepo using components.yaml
ESMA_env | (t) v4.8.0
ESMA_cmake | (t) v3.21.0
ecbuild | (t) geos/v1.3.0
Recloning done.
❯ ls -1 ESMA_env | head -1
BASEDIR.rc.in
Note we also require the user to be in the root of a fixture:
❯ mepo clone
Initializing mepo using components.yaml
ESMA_env | (t) v4.8.0
ESMA_cmake | (t) v3.21.0
ecbuild | (t) geos/v1.3.0
❯ cd ESMA_cmake/ecbuild
❯ mepo reset
Error! As a safety precaution, you must be in the root directory of the project to reset
What's Changed
- Gitflow. Main to develop by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/243
- Add new reset command by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/245
- Update GitHub Actions by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/247
- GitFlow: Merge Develop into Main For Release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/246
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.47.0...v1.48.0
- Python
Published by mathomp4 over 3 years ago
mepo - Add mepo tag push --delete
This release of mepo adds a capability to delete tags on the remote with:
mepo tag push --delete tagname repo1 repo2
From CHANGELOG.md
Added
- Added ability to do
mepo tag push --deleteso you can delete a tag on the remote
What's Changed
- Add tag push delete by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/240
- Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/241
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.46.0...v1.47.0
- Python
Published by mathomp4 over 3 years ago
mepo - Add changed-files command
This release adds a new changed-files command to mepo. Essentially it will list all files that are different compared to the original tags/branches in the components.yaml (technically the mepo state, so if mepo save was run, the new components.yaml).
For example, if there are no changes:
bash
❯ mepo compare
No repositories have changed
❯ mepo changed-files
Now we checkout a branch:
bash
❯ mepo develop MAPL
Checking out development branch develop in MAPL
❯ mepo changed-files
./src/Shared/@MAPL/CHANGELOG.md
./src/Shared/@MAPL/generic/MAPL_Generic.F90
This shows that compared to where we started, we have two new files. Now let us alter a file and add a file:
bash
❯ touch foo
❯ echo "bobob" >> src/Components/@GEOSgcm_GridComp/README.md
❯ mepo changed-files
./foo
./src/Shared/@MAPL/CHANGELOG.md
./src/Shared/@MAPL/generic/MAPL_Generic.F90
./src/Components/@GEOSgcm_GridComp/README.md
Finally, it has a --full-path option for a full path.
bash
❯ mepo changed-files --full-path
/Users/mathomp4/Models/GEOSgcm-mepo-newfilesvorigin/GEOSgcm/foo
/Users/mathomp4/Models/GEOSgcm-mepo-newfilesvorigin/GEOSgcm/src/Shared/@MAPL/CHANGELOG.md
/Users/mathomp4/Models/GEOSgcm-mepo-newfilesvorigin/GEOSgcm/src/Shared/@MAPL/generic/MAPL_Generic.F90
/Users/mathomp4/Models/GEOSgcm-mepo-newfilesvorigin/GEOSgcm/src/Components/@GEOSgcm_GridComp/README.md
From CHANGELOG.md
Added
- Add new
changed-filescommand to list all changed files vs original state
What's Changed
- Add ability to display changed files by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/236
- GitFlow: Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/237
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.45.0...v1.46.0
- Python
Published by mathomp4 over 3 years ago
mepo - Add tag support to checkout-if-exists
This release now allows for checkout-if-exists to work on tags or branches. For a branch:
❯ mepo checkout-if-exists feature/mathomp4/add-shared-baselibs-support -n
Branch feature/mathomp4/add-shared-baselibs-support exists in env
Branch feature/mathomp4/add-shared-baselibs-support exists in cmake
Branch feature/mathomp4/add-shared-baselibs-support exists in MAPL
Branch feature/mathomp4/add-shared-baselibs-support exists in GEOSgcm_GridComp
and for a tag:
❯ mepo checkout-if-exists sdr_r21c_v01 -n
Tag sdr_r21c_v01 exists in GEOSgcm_GridComp
Tag sdr_r21c_v01 exists in GEOSgcm_App
Before tags were just ignored.
From CHANGELOG.md
Changed
- Allow
checkout-if-existsto work on tags or branches
What's Changed
- Allow checkout-if-exists to work on tags by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/232
- Merge develop into main for release. by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/233
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.44.0...v1.45.0
- Python
Published by mathomp4 almost 4 years ago
mepo - Add typechange support
This release adds support for typechange commits. At the moment, mepo status will say:
GOCART | (b) main
| ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP.20C/DU2G_instance_DU.rc: unknown (please contact mepo maintainer)
because it doesn't know about this. But with this releas we can now translate those:
GOCART | (b) main
| ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP.20C/DU2G_instance_DU.rc: typechange, staged but deleted, not staged
Note this might not be a complete support for typechange, but at least should cover the "main" commits.
From CHANGELOG.md
Fixed
- Add support for typechange in
mepo status
What's Changed
- Fixes #228. Add typechange support by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/229
- Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/230
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.43.0...v1.44.0
- Python
Published by mathomp4 about 4 years ago
mepo - Fixes for mepo clone
This release fixes a bug in mepo clone.
First, it makes the error a bit more clear when you try to mepo clone in a fixture already cloned (see #224):
```console
$ mepo clone git@github.com:GEOS-ESM/MAPL.git
Initializing mepo using components.yaml
ESMAenv | (t) v3.11.0
ESMAcmake | (t) v3.10.0
ecbuild | (t) geos/v1.2.0
$ cd MAPL
$ mepo clone
fatal: destination path '/Users/mathomp4/Models/MAPL/ESMA_env' already exists and is not an empty directory.
Error! Repo [ESMA_env] already cloned ```
Note it will always error out with the first repo mepo tries to clone again.
But, it also fixes a bug where you could re-mepo clone in any subdirectory! For example this:
console
$ mepo clone git@github.com:GEOS-ESM/MAPL.git
Initializing mepo using components.yaml
ESMA_env | (t) v3.11.0
ESMA_cmake | (t) v3.10.0
ecbuild | (t) geos/v1.2.0
$ cd MAPL/shared
$ mepo clone
ESMA_env | (t) v3.11.0
ESMA_cmake | (t) v3.10.0
ecbuild | (t) geos/v1.2.0
should be an obvious failure. But, nope, there was a bug in the code such that what you'd get is an entire new set of subrepos in that subdirectory!
Now the failure is caught: ```console $ mepo clone git@github.com:GEOS-ESM/MAPL.git Initializing mepo using components.yaml ESMAenv | (t) v3.11.0 ESMAcmake | (t) v3.10.0 ecbuild | (t) geos/v1.2.0 $ cd MAPL/shared $ mepo clone fatal: destination path '/Users/mathomp4/Models/MAPL/ESMA_env' already exists and is not an empty directory.
Error! Repo [ESMA_env] already cloned ```
What's Changed
- Fixes #224. Fix for running mepo clone more than once by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/225
- Merge develop into main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/226
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.42.0...v1.43.0
- Python
Published by mathomp4 about 4 years ago
mepo - Add ability to ignore whitespace with diff
This release adds a -b/--ignore-space-change flag to the mepo diff command, a la git diff -b. This allows diffing to ignore whitespace changes.
What's Changed
- Add whitespace ignore to diff by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/221
- Merge develop into main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/222
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.41.0...v1.42.0
- Python
Published by mathomp4 about 4 years ago
mepo - Make compare brief by default
This release changes the default behavior of mepo compare. Now, mepo compare will only show differing repos:
❯ mepo compare
Repo | Original | Current
---------------------- | -------------------------------- | -------
env | (t) v3.11.0 (DH) | (b) main
cmake | (t) v3.10.0 (DH) | (b) develop
MAPL | (t) v2.17.2 (DH) | (b) develop
To see all repos, use --all:
❯ mepo compare --all
Repo | Original | Current
---------------------- | -------------------------------- | -------
GEOSgcm | (b) main | (b) main
env | (t) v3.11.0 (DH) | (b) main
cmake | (t) v3.10.0 (DH) | (b) develop
ecbuild | (t) geos/v1.2.0 (DH) | (t) geos/v1.2.0 (DH)
NCEP_Shared | (t) v1.2.0 (DH) | (t) v1.2.0 (DH)
GMAO_Shared | (t) v1.5.1 (DH) | (t) v1.5.1 (DH)
MAPL | (t) v2.17.2 (DH) | (b) develop
FMS | (t) geos/2019.01.02+noaff.7 (DH) | (t) geos/2019.01.02+noaff.7 (DH)
GEOSgcm_GridComp | (t) v1.15.0 (DH) | (t) v1.15.0 (DH)
FVdycoreCubed_GridComp | (t) v1.6.0 (DH) | (t) v1.6.0 (DH)
fvdycore | (t) geos/v1.3.0 (DH) | (t) geos/v1.3.0 (DH)
GEOSchem_GridComp | (t) v1.8.1 (DH) | (t) v1.8.1 (DH)
HEMCO | (t) geos/v2.2.2 (DH) | (t) geos/v2.2.2 (DH)
geos-chem | (t) geos/v13.0.0-rc1 (DH) | (t) geos/v13.0.0-rc1 (DH)
GOCART | (t) v2.0.4 (DH) | (t) v2.0.4 (DH)
mom | (t) geos/5.1.0+1.2.0 (DH) | (t) geos/5.1.0+1.2.0 (DH)
mom6 | (t) geos/v2.0.2 (DH) | (t) geos/v2.0.2 (DH)
RRTMGP | (t) geos/v1.5+1.0.0 (DH) | (t) geos/v1.5+1.0.0 (DH)
GEOSgcm_App | (t) v1.7.0 (DH) | (t) v1.7.0 (DH)
UMD_Etc | (t) v1.0.4 (DH) | (t) v1.0.4 (DH)
CPLFCST_Etc | (t) v1.0.1 (DH) | (t) v1.0.1 (DH)
If no repos differ, you see:
❯ mepo compare
No repositories have changed
❯ mepo compare --all
No repositories have changed
What's Changed
- Merge main into develop by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/217
- Make compare brief by default, add --all option by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/218
- Merge develop into main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/219
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.40.0...v1.41.0
- Python
Published by mathomp4 about 4 years ago
mepo - Fix for compare and add ignore-case to whereis
This release has a few updates.
First, a bugfix to mepo compare where the table layout was broken in 1.39.0. The new hashes-for-detached-branches messed up the logic for pretty printing the table.
Next, mepo whereis has a new --ignore-case option. Before you had to know the exact case of component's name for mepo whereis to work:
console
❯ mepo whereis mapl
Traceback (most recent call last):
File "/Users/mathomp4/bin/mepo", line 17, in <module>
main()
File "/Users/mathomp4/mepo/mepo.d/main.py", line 6, in main
command.run(args)
File "/Users/mathomp4/mepo/mepo.d/command/command.py", line 11, in run
cmd_module.run(args)
File "/Users/mathomp4/mepo/mepo.d/command/whereis/whereis.py", line 15, in run
verify.valid_components([args.comp_name], allcomps, ignore_case=args.ignore_case)
File "/Users/mathomp4/mepo/mepo.d/utilities/verify.py", line 23, in valid_components
_validate_component(component_to_find, all_component_names)
File "/Users/mathomp4/mepo/mepo.d/utilities/verify.py", line 35, in _validate_component
raise Exception('Unknown component name [{}]'.format(component))
Exception: Unknown component name [mapl]
❯ mepo whereis MAPL
Shared/@MAPL
With the option this is not the case:
console
❯ mepo whereis -i mapl
Shared/@MAPL
The main use of this is in mepo-cd which now defaults to case-insensitive use so mepo-cd mapl will work.
What's Changed
- Add ignore-case option to mepo whereis, update mepo-cd by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/213
- Fix mepo compare output by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/214
- Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/215
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.39.0...v1.40.0
- Python
Published by mathomp4 over 4 years ago
mepo - Display hash of detached branches and ignore permissions for diff and status
This release of mepo adds some functionality to status and diff.
First, when running mepo compare and mepo status, detatched branches will also display the commit id:
GEOSgcm_GridComp | (b) feature/aogcm (DH, 0793f7b2)
to allow users a better idea of where detached branches are.
Second, new options were added to status and `diff:
- Added
--ignore-permissionsflag tostatusanddiffto allow the commands to ignore permissions changes - Add
--name-statusflag tomepo diff
What's Changed
- Add option to ignore permissions with status and diff by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/209
- Display detached branches with hash by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/208
- Update changelog for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/210
- Merge Develop into main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/211
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.38.0...v1.39.0
- Python
Published by mathomp4 over 4 years ago
mepo - Detach branches on clone
This update of mepo detaches branches on clone. This was always the intent of mepo but was broken at some point.
Also adds --detach as an option to checkout commands since the ability is there now.
Finally, adds a CHANGELOG.
What's Changed
- Merge main back into develop for gitflow by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/197
- Update LICENSE to Apache, other license changes by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/199
- Fix license reference in CONTRIBUTING.md by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/200
- Add changelog and changelog enforcer by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/204
- Detach branches on clone by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/205
- Merge Develop into Main for release by @mathomp4 in https://github.com/GEOS-ESM/mepo/pull/206
Full Changelog: https://github.com/GEOS-ESM/mepo/compare/v1.37.1...v1.38.0
- Python
Published by mathomp4 over 4 years ago
mepo - Fix for mepo save
This release has a fix for mepo save
- Python
Published by mathomp4 almost 5 years ago
mepo - Allow checkout -b on all repos, fix path handling
This release to mepo:
- Allows
mepo checkout -b <branch>to run on all repos rather than requiring one to be specified - Fixes a bug in handling paths with spaces in folder names
- Python
Published by mathomp4 almost 5 years ago
mepo - Make pull commands more verbose
This release of mepo makes the mepo pull and mepo pull-all commands verbose by default. Now you will get:
console
❯ mepo pull ESMA_env
Pulling branch test-branch in ESMA_env
Updating 3ec540d..653348b
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
X11 forwarding request failed on channel 0
From github.com:GEOS-ESM/ESMA_env
3ec540d..653348b test-branch -> origin/test-branch
instead of just:
console
❯ mepo pull ESMA_env
Pulling branch test-branch in ESMA_env
It was found that this was a bit too quiet and gave no indication if anything changed.
The older, quieter behavior can be gotten by adding the new --quiet option to pull and pull-all
- Python
Published by mathomp4 almost 5 years ago
mepo - Fix mepo save and allow hash in components.yaml
This release has a bug fix for mepo save as found when looking into Issue #180
Also, this release allows the use of a hash: key in components.yaml a la:
yaml
ESMA_cmake:
local: ./ESMA_cmake
remote: ../ESMA_cmake.git
hash: a64765f4ddc00c62b441bb08b31585cfa645756e
develop: develop
This needs changes because git clone -b hash is not allowed. Only tags and branches (I think?) are allowed:
-b <name>, --branch <name>
Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository's HEAD, point to <name> branch instead. In a non-bare repository,
this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository.
These updates also triggered cascades into fixing mepo status and mepo compare as we touched the sanitizer code.
- Python
Published by mathomp4 almost 5 years ago
mepo - Allow checkout on all repos
Much like how v1.34.0 allowed fetch to run on all repos if no components are specified, with this release, mepo checkout also can now run on all repos if no components are specified.
NOTE: We DO NOT ALLOW mepo checkout -b to run on all components at once. If you want to make a new branch, we want you to think about it and be specific.
- Python
Published by mathomp4 about 5 years ago
mepo - Fix for tags
This release fixes a bug in the tag subcommand.
- Python
Published by mathomp4 about 5 years ago
mepo - Clean up and add doc script
This release is mainly a clean up, but it does have a couple substantive changes:
- The
fetch-allcommand is removed and "subsumed" into thefetchcommand.fetch-allwas written at a time when the developer's Python skills were worse than they presently are. - The
push-allcommand was removed. This was always a scary command that mainly existed to push tags on all repos. Once that functionality went tomepo tag push, this is now cause issues if you pushed when not desired. So, instead, users need to usemepo pushon specific repos.
Beyond this, the main addition is a script that aids in making the Mepo Commands wiki page. For Markdown reasons, some of the Argparse parsers had to be changed to better work with Markdown syntax.
- Python
Published by mathomp4 about 5 years ago
mepo - Obey config file for no style
This is a bugfix release. Previously, if no style was passed into mepo, by default it chose prefix. This is fine for GEOSgcm, etc. but broke MAPL which uses naked.
For now, if no style is found passed in on the command line or in .mepoconfig assume what is in components.yaml is the correct sytle.
(Updates will be needed to fixtures to support all styles.)
- Python
Published by mathomp4 about 5 years ago
mepo - Changes to tag handling
Tags in mepo were always iffy, so this now has better support. With this release these commands:
mepo push --tags
and:
mepo push-all --tags
are now no longer available. To push tags, you now use mepo tag push:
```console
❯ mepo tag push --help
usage: mepo tag push [-h] [-f] tag-name [comp-name ...]
Push tag
positional arguments: tag-name comp-name Component to push tags in
optional arguments: -h, --help show this help message and exit -f, --force Force push (be careful!) ```
- Python
Published by mathomp4 about 5 years ago
mepo - Multiple Enhancements and Fixes
This release of mepo has many enhancements.
Updates
Mepo Styles
With this PR, one can do:
mepo init --style <foo>
or:
mepo clone --style <foo> URL
and the --style <foo> can be one of naked, prefix, and postfix with the default as prefix as that is the current dominant style.
These styles are prefix leads to @subrepo, postfix leads to subrepo@, and naked leads to subrepo when mepo clones the subrepos
Mepo Config
Add support for a ~/.mepoconfig file and adds a new command:
```console
usage: mepo config [-h] {get,set,delete,print} ...
Runs config commands.
positional arguments:
{get,set,delete,print}
``
which has four subcommands. I tried to make it likegit-config` in many respects, but I'm not that good at Python and Argparse so it's like many other mepo commands with subcommands.
NOTE: This capability is not as powerful as git-config is. For example, this:
[alias]
ci = commit
is allowed. But this:
[alias]
cm = commit -m
is not. This is a limitation of what I could do in Python and with Argparse. You can make an alias of a command, but not any of the options of commands. And I couldn't figure out how to do aliases with subcommands.
For "style" (see above) the entry would be:
[init]
style = postfix
It's in the [init] section because technically that is where the command is used. It's just that mepo clone "piggybacks" on init so that if you do:
mepo clone --style naked
it's actually doing:
mepo init --style naked
mepo clone
Examples
mepo config print
To print the .mepoconfig file:
mepo config print
mepo config set
To set a value in the .mepoconfig file:
mepo set alias.st status
In "gitconfig" style, this is equivalent to adding to the file:
console
[alias]
st = status
mepo config get
This command gets section.option:
```console
❯ mepo config get alias.st
[alias]
st = status
```
mepo config delete
This command deletes the section.option from the file
Tagging Updates
Allow mepo tag create and mepo tag delete to work on all components if none are passed in.
Push-All
Created mepo push-all ~to so one can do mepo push-all --tags to push tags on all repos~
ETA: Update to 1.32.0 and use mepo tag push
Fixes
Status and Compare Weirdness
This update uses git rev-list to try and see if two tags are the same. This can then be used in status and compare so that just in case mepo is seeing different tags, we can check if they point to the same commit. If they do, then we just "re-use" the original tag that mepo clone used.
- Python
Published by mathomp4 about 5 years ago
mepo - Add -q flag
This just adds a -q flag for the commands with --quiet.
- Python
Published by mathomp4 about 5 years ago
mepo - Detect illegal components.yaml
This release adds a check to make sure a component in components.yaml does not do something like this:
yaml
ESMA_cmake:
local: ./ESMA_cmake
remote: ../ESMA_cmake.git
tag: v3.3.6
branch: develop
develop: develop
Now, mepo will not allow a tag: and branch: key in a component.
Also, mepo checkout and mepo develop gain useful prints like mepo checkout-if-exists:
adds some useful prints to mepo checkout and mepo develop such that if you do:
console
❯ mepo checkout v3.1.3 ESMA_env
Checking out v3.1.3 in ESMA_env
❯ mepo checkout -b feature/amazing ESMA_cmake
Creating and checking out branch feature/amazing in ESMA_cmake
❯ mepo develop MAPL
Checking out development branch develop in MAPL
- Python
Published by mathomp4 about 5 years ago
mepo - Clean up of mepo save
This release adds nicety to mepo save where it will add blank lines between the sections in the components-new.yaml file.
- Python
Published by mathomp4 about 5 years ago
mepo - Fix for cloning
This is a bugfix for mepo. Before, mepo did this when cloning a branch/tag called foo:
git clone repo.git
git checkout foo
This worked just fine until an update to the MOM6 repo in GEOS. The issue is that in MOM6, the fork was updated and in that update, the submodules underneath changed on the default branch and there were less. So, in doing so, you couldn't get the new submodules. The solution is to do:
git clone -b foo repo.git
This exposed some other issues in status and compare which seem to be fixed, but time will tell.
- Python
Published by mathomp4 over 5 years ago
mepo - Bug fix for mepo status
This release fixes a bug in mepo status.
The way mepo was figuring out what branch you were on with detached head was:
git show -s --pretty=%D HEAD
and then taking the second field. In most cases, this is fine, but sometimes you have two branches that are identical:
console
❯ git show -s --pretty=%D HEAD
HEAD, origin/feature/wputman/dyamond_v2, origin/develop, origin/HEAD, develop
So, even though you checked out develop, mepo status was returning that after running mepo clone you were on feature/wputman/dyamond_v2. While this isn't incorrect, it doesn't match where we started and mepo shows a difference.
After looking at the git source code, I think it uses the internals used for the reflog to get this. If I look at the git-reflog output:
console
❯ git reflog
eb7e199 (HEAD, origin/feature/wputman/dyamond_v2, origin/develop, origin/HEAD, develop) HEAD@{0}: checkout: moving from develop to origin/develop
eb7e199 (HEAD, origin/feature/wputman/dyamond_v2, origin/develop, origin/HEAD, develop) HEAD@{1}: clone: from github.com:GEOS-ESM/GEOSgcm_GridComp.git
Now we see internally it knows we checked out develop and then detached to origin/develop. We can capture this knowledge with git reflog HEAD -n 1 and then take the last part of the string.
I also clean up an odd save issue.
- Python
Published by mathomp4 over 5 years ago
mepo - Add mepo commit -a
This release adds the ability to do mepo commit -a or mepo commit --all a la git commit -a/--all. It essentially runs mepo stage and then mepo commit.
Thanks to @WilliamJamieson for this feature.
- Python
Published by mathomp4 over 5 years ago
mepo - Fix no-config mepo clone
The last release introduced a bug when doing mepo clone URL without --config. This fixes that.
- Python
Published by mathomp4 over 5 years ago
mepo - Fix for using config with "all-in-one" clone
This fixes a bug in doing:
mepo clone --config <config-file> URL
- Python
Published by mathomp4 over 5 years ago
mepo - Add --force flag for fetch and fetch-all
Adds a --force flag to mepo fetch and mepo fetch-all
- Python
Published by mathomp4 over 5 years ago
mepo - Add --staged option to mepo diff
This release adds a --staged option to mepo diff a la git diff --staged
- Python
Published by mathomp4 over 5 years ago
mepo - Bug fix for Fixture Initialization
This fixes a bug in fixture initialization. mepo assumed all branches were detached head but fixture branches will not be (since we don't detach those)
- Python
Published by mathomp4 over 5 years ago
mepo - Bug fix for CI Systems
Some CI systems clone repos in odd ways (for GitHub Actions, it's not even a clone!). So, some fixes are needed for the weird edge cases of repository "getting".
- Python
Published by mathomp4 over 5 years ago
mepo - Adds ability to see fixture
Note that this release of mepo allows one to see the fixture in mepo, but changes are needed. To see the fixture, the components.yaml needs to have something like:
yaml
GEOSadas:
fixture: true
develop: main
where the only allowed keys for the fixture are fixture: and develop:. And only one entry in components.yaml can be "the fixture".
As an example, using a (temporary) branch of GEOSadas.git with that entry added:
console
$ mkdir GEOSadas-with-mepo-fixture-in-repo
$ cd GEOSadas-with-mepo-fixture-in-repo
$ mepo clone -b feature/mathomp4/mepo-fixture-testing git@github.com:GEOS-ESM/GEOSadas.git
Initializing mepo using components.yaml
env | (b) origin/feature/bmauer/updates-from-geosadas5_27_0
cmake | (t) v1.0.11
ecbuild | (t) geos/v1.0.0
...
$ cd GEOSadas
$ mepo status
Checking status...
GEOSadas | (b) feature/mathomp4/mepo-fixture-testing
env | (b) feature/bmauer/updates-from-geosadas5_27_0 (DH)
cmake | (t) v1.0.11 (DH)
...
So the fixture is seen. Now we'll move up the tree, but do things in the fixture to make sure we are tracking it correctly:
console
$ mepo-cd GEOSana_GridComp
$ pwd
/discover/swdev/mathomp4/Models/GEOSadas-with-mepo-fixture-in-repo/GEOSadas/src/Components/@GEOSana_GridComp
$ mepo whereis
GEOSadas | ../../..
env | ../../../@env
cmake | ../../../@cmake
...
$ mepo checkout -b my-awesome-new-feature GEOSadas
+ GEOSadas: my-awesome-new-feature
$ mepo compare
Repo | Original | Current
---------------------- | --------------------------------------------------- | -------
GEOSadas | (b) feature/mathomp4/mepo-fixture-testing (DH) | (b) my-awesome-new-feature
env | (b) feature/bmauer/updates-from-geosadas5_27_0 (DH) | (b) feature/bmauer/updates-from-geosadas5_27_0 (DH)
cmake | (t) v1.0.11 (DH) | (t) v1.0.11 (DH)
...
$ /home/mathomp4/MepoDevelopment/mepo branch list GEOSadas
GEOSadas | feature/mathomp4/mepo-fixture-testing
| * my-awesome-new-feature
The new branch is seen, let's make a change:
```console
$ echo "This is a new line" >> $(mepo whereis GEOSadas)/README.md
$ mepo status
Checking status...
GEOSadas | (b) my-awesome-new-feature
| README.md: modified, not staged
env | (b) feature/bmauer/updates-from-geosadas5270 (DH)
cmake | (t) v1.0.11 (DH)
...
$ mepo diff
Diffing...
GEOSadas (location: ../../..):
diff --git a/README.md b/README.md index 3065294..792630d 100644 --- a/README.md +++ b/README.md @@ -188,3 +188,4 @@ cd install/bin ### Run the ADAS
Like the AGCM step above, the ADAS setup scripts are also install/bin/
+This is a new line
$ mepo-cd
$ git status
On branch my-awesome-new-feature
Changes not staged for commit:
(use "git add
no changes added to commit (use "git add" and/or "git commit -a") ```
- Python
Published by mathomp4 over 5 years ago
mepo - Add mepo-cd.csh
This release adds a mepo-cd.csh that when sourced adds a mepo-cd alias.
- Python
Published by mathomp4 over 5 years ago
mepo - Fixes for whereis and diff
Fixes a few bugs with whereis and diff
- Python
Published by mathomp4 over 5 years ago
mepo - Fix for moving fixtures
This release has some bugfixes and new features:
- Updates to allow mepo clones to be moved (#106)
- A bit of nicety on
mepo statusfor detatched HEAD states - Adds
mepo-cd.zshas I couldn't figure out how to get the bash script to work in zsh
- Python
Published by mathomp4 over 5 years ago
mepo - Bug fixes and enhancements for mepo save
The mepo save command had some issues exposed in recent testing.
- The command would save the new yaml file in
pwdrather than at the "root" directory where the original was. This was a bit confusing, so the command now saves at root level mepo savedid not handle hashes well. There is no reason it couldn't save to a hash, but it labeled it as abranchin the yaml file which, while not broken, was in consistent.
- Python
Published by mathomp4 over 5 years ago
mepo - Add dry-run for checkout-if-exists
This release adds a --dry-run (or -n) option to checkout-if-exists which lists if a branch exists on a repo without checking out:
❯ mepo checkout-if-exists -n feature/mathomp4/mkl-is-optional
Branch feature/mathomp4/mkl-is-optional exists in cmake
Branch feature/mathomp4/mkl-is-optional exists in NCEP_Shared
Branch feature/mathomp4/mkl-is-optional exists in GEOSgcm_GridComp
- Python
Published by mathomp4 almost 6 years ago
mepo - Add per-repo diff
This release adds a per-repo diff capability a la:
$ mepo diff <repo>
Before it was only all repos.
- Python
Published by mathomp4 almost 6 years ago
mepo - Add tag commands and per-component branch list
This release of mepo adds a mepo tag command (with subcommands) as well as an update to mepo branch list.
mepo tag adds these subcommands:
- mepo tag list ==> git tag
- This can be run on all repos or mepo tag <repo> for a specifig
- mepo tag create ==> git tag but actually making a tag (with -a as option)
- This has both a -a and -m option for annotated tags. If -a is added without -m this will popup an editor
- mepo tag delete ==> git tag -d
- This only deletes locally not on the remote
A new mepo push --tags was added to push tags.
Also added was the ability to do mepo branch list <repo> to list branches only on one (or more) repos.
Finally, a .zenodo.json file was added.
- Python
Published by mathomp4 almost 6 years ago
mepo - Add restore-state
This release adds a mepo restore-state command
With this command, you should be able to restore a checkout to what the original state was. This was a request/idea inspired by @yvikhlya: ``` ❯ mepo compare Repo | Original | Current ---------- | -------------------- | ------- ESMAenv | (t) v2.1.6 (DH) | (b) feature/mathomp4/intel1912 ESMAcmake | (t) v3.1.2 (DH) | (t) v3.1.2 (DH) ecbuild | (t) geos/v1.0.5 (DH) | (t) geos/v1.0.5 (DH)
❯ mepo restore-state Checking status... Reverting ESMA_env to v2.1.6
❯ mepo compare Repo | Original | Current ---------- | -------------------- | ------- ESMAenv | (t) v2.1.6 (DH) | (t) v2.1.6 (DH) ESMAcmake | (t) v3.1.2 (DH) | (t) v3.1.2 (DH) ecbuild | (t) geos/v1.0.5 (DH) | (t) geos/v1.0.5 (DH) ```
Note: at present this will restore EVERYTHING to the previous state. Not a repo here or there.
- Python
Published by mathomp4 almost 6 years ago
mepo - Add pull, pull-all, and fetch-all commands
This release adds:
mepo pullmepo pull-allmepo fetch-all
Note that since you can't git pull on a detached HEAD state, the pull-all will only pull on real branches. The others will spit out as a print:
❯ mepo pull-all
Pulling branch throw-away in ESMA_env
The following repos were not pulled (detached HEAD): ESMA_cmake, ecbuild
Also fixes the mepo file as, on Darwin, things went kablooey recently with Python 3.8
- Python
Published by mathomp4 almost 6 years ago
mepo - Updates to clone command
With this release, mepo clone is extended to allow:
mepo clone -b tag URL
which is like:
git clone URL
cd
git checkout tag
mepo init && mepo clone
Also added ability to do:
mepo clone URL directory
and even:
mepo clone -b tag URL directory
- Python
Published by mathomp4 almost 6 years ago
mepo - Fix for mepo push
In adding functionality to support relative URLs for mepo save, mepo push was accidentally broken. This release fixes that.
- Python
Published by mathomp4 almost 6 years ago
mepo - Add mepo stash
This release will adds five subcommands under mepo stash:
push <repo>listapply <repo>pop <repo>show <repo>
It's not perfect as you can't pass in a stash reference say, but it's a first start.
- Python
Published by mathomp4 almost 6 years ago
mepo - Clone and Fetch Updates
This version of mepo adds and changes the following.
Adds
mepo fetchcan now use--tagsand--prunemepo clonecan now runmepo initfor you if not done explicitlymepo clone URLwill do agit clone URL/cd/mepo init/mepo cloneall in one shot- Better handling of hashes.
components.yamlwill now accepthash:a latag:andbranch:
Changes
mepo initandmepo clonehave a slightly different interface if using a different yaml file. Since the ability ofcloneto use a URL, to pass a different yaml file, needs to be done with a flagged option:--config yamlfile
Fixes
mepo statuswon't crash if a repo is not on a tag or branch
- Python
Published by mathomp4 about 6 years ago
mepo - Updates to CI and Unit Tests
- Update the CI to use a matrix on Linux and macOS of python3.x and pypy3
- Fix the unit tests
- Python
Published by mathomp4 about 6 years ago
mepo - Fix bad shebang
A hard coded shebang got into v1.10.0. This is a fix
- Python
Published by mathomp4 about 6 years ago
mepo - Add to mepo-cd functionality
With this release, mepo-cd has a new ability. If you run mepo-cd with no arguments, it will cd into the "root" of the project (aka the directory where mepo init was run)
- Python
Published by mathomp4 about 6 years ago
mepo - Add fetch capability
This adds mepo fetch and mepo fetch --all ability.
- Python
Published by mathomp4 about 6 years ago
mepo - Single editor for multi-repo commit
This release makes mepo commit repo1 repo2 a lot nicer. Before it would spawn an editor for each repo. This seems wrong. Now it will spawn an editor and then use the commit message from that for each commit.
It does this through using git var GIT_EDITOR to figure out an editor and then uses Python temp files.
- Python
Published by mathomp4 over 6 years ago
mepo - Additional Functionality
Adds new functionality:
- Add
--name-onlytomepo diff - Add colors to
mepo statusfor non-original branches - Make
checkout-if-existsmore verbose - Make
mepo commitact more likegit commit
- Python
Published by mathomp4 over 6 years ago
mepo - Add checkout-if-exists capability
This release adds a new capability:
mepo checkout-if-exists <branch-name>
which scans all the repositories mepo is tracking and, if branch-name exists on it, it checks it out.
This will be useful for multi-repository features and for doing CI testing of those features.
- Python
Published by mathomp4 over 6 years ago
mepo - Add ability to work with symlinks
This allows one to call a symlink to mepo.
- Python
Published by mathomp4 over 6 years ago
mepo - Add recurse_submodules
This release adds the ability to have recurse_submodules: in the YAML file.
- Python
Published by mathomp4 over 6 years ago
mepo - Add diff command
Adds a mepo diff command. Probably needs tweaking, but it's not bad.
Also, add a CODEOWNERS file.
- Python
Published by mathomp4 over 6 years ago
mepo - Updates to status and compare
This release has some updates to mepo status and mepo compare as well as inclusion of mepo-cd, a Bash function that uses mepo whereis to "know" how to cd into a component.
The status update involves making it more readable. Previous output was based on git status --short:
MAPL | (t) v1.1.12 (DH)
| M GMAO_pFIO/tests/test_RequestDataMessage.pf
| D README.md
| RD CHANGELOG.md -> yaya
| ?? bobo
which is a bit obscure. The new output tries to decode the output:
MAPL | (t) v1.1.12 (DH)
| GMAO_pFIO/tests/test_RequestDataMessage.pf: modified, not staged
| README.md: deleted, not staged
| CHANGELOG.md: renamed, staged as yaya but deleted, not staged
| bobo: untracked file
Most simple cases that should be encountered have been handled, though things like weird merges won't decode yet.
As for compare, the main change is to try and detect the size of a terminal. If it's wide enough, the command won't wrap.
Finally, mepo-cd is a way to cd into a Component a la mepo-cd MAPL. It's a Bash function only at the moment.
- Python
Published by mathomp4 over 6 years ago
mepo - init, clone, status, checkout, branch, diff, where, whereis, history, stage
- Python
Published by pchakraborty over 6 years ago
mepo - init, clone, status, checkout, branch, diff, where
- Python
Published by pchakraborty over 6 years ago