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 to components.yaml to force blobless cloning for a repo

From CHANGELOG.md

Added

  • Added ahead/behind info to mepo status
  • Added blobless: option to components.yaml to force blobless cloning for a repo

Changed

  • Moved coloring of git status output from src/mepo/git.py to src/mepo/command/status/py
  • Streamlined output processing of git status
  • Migrated mepo management from rye to uv

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

DOI

From CHANGELOG.md

Fixed

  • Fixed clone to allow for fixtures without a develop: key in components.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

DOI

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 status and mepo restore-state to default to their serial variants rather than parallel by default. At the same time, we remove the --serial option from these commands and add a --parallel option 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

DOI

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, allrepos and registry

Added

  • Added tests for mepo clone --allrepos and mepo 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

DOI

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 status serial 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

DOI

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 --location for 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 bin directory
  • 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

DOI

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

DOI

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.toml to aid with pip installation.

  • Engineering -- Formatting with Black -- Linting with Pylint -- Dependency management and packaging with Rye

  • Added tests to cover more mepo commands

  • Add new command update-state to permanently convert mepo1 style state to mepo2

Changed

  • Converted mepo to a Python project via the following renaming -- Added src/mepo/__init__.py -- Renamed mepo.d -> src/mepo -- Renamed mepo.d/utest -> tests -- Renamed doc --> docs -- A mepo config file is now called a mepo registry -- More code reorganization

  • Helper script mepo, used for development, moved to the bin directory.

  • Added README for docs/make_md_docs.py script

  • State: 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

DOI

This release adds support for partial clones with mepo clone. A new option --partial has three settings:

  • off: performs a "normal" git clone
  • blobless: performs a blobless clone via git clone --filter=blob:none
  • treeless: performs a treeless clone via git 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 --partial option to mepo clone with two settings: off, blobless, and treeless. If you set, --partial=blobless then the clone will not download blobs by using --filter=blob:none. If you set --partial=treeless then the clone will not download trees by using --filter=tree:0. The blobless option is useful for large repos that have a lot of binary files that you don't need. The treeless option is even more aggressive and SHOULD NOT be used unless you know what you are doing. The --partial=off option allows a user to override the default behavior of --partial in .mepoconfig and turn it off for a run of mepo clone.
  • Add a new section for .mepoconfig to allow users to set --partial as a default for mepo 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

DOI

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

DOI

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 ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: icepack (new commits)

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_submodules field in components.yaml to allow ignoring submodules in a repo. Currently used for status and diff commands.

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

DOI

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 status has now a --hashes option 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 --hashes reading 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

DOI

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

DOI

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

DOI

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 --delete so 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

DOI

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-files command 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

DOI

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-exists to 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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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-permissions flag to status and diff to allow the commands to ignore permissions changes
  • Add --name-status flag to mepo 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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

This release fixes a bug in the tag subcommand.

- Python
Published by mathomp4 about 5 years ago

mepo - Clean up and add doc script

DOI

This release is mainly a clean up, but it does have a couple substantive changes:

  1. The fetch-all command is removed and "subsumed" into the fetch command. fetch-all was written at a time when the developer's Python skills were worse than they presently are.
  2. The push-all command was removed. This was always a scary command that mainly existed to push tags on all repos. Once that functionality went to mepo tag push, this is now cause issues if you pushed when not desired. So, instead, users need to use mepo push on 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

DOI

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

DOI

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 in component . If no component is specified, runs over all components

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

DOI

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

DOI

This just adds a -q flag for the commands with --quiet.

- Python
Published by mathomp4 about 5 years ago

mepo - Detect illegal components.yaml

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

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 ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: README.md

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

DOI

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

DOI

Fixes a few bugs with whereis and diff

- Python
Published by mathomp4 over 5 years ago

mepo - Fix for moving fixtures

DOI

This release has some bugfixes and new features:

  1. Updates to allow mepo clones to be moved (#106)
  2. A bit of nicety on mepo status for detatched HEAD states
  3. Adds mepo-cd.zsh as 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

DOI

The mepo save command had some issues exposed in recent testing.

  1. The command would save the new yaml file in pwd rather than at the "root" directory where the original was. This was a bit confusing, so the command now saves at root level
  2. mepo save did not handle hashes well. There is no reason it couldn't save to a hash, but it labeled it as a branch in 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

DOI

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

DOI

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

DOI

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

DOI

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

DOI

This release adds:

  • mepo pull
  • mepo pull-all
  • mepo 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

DOI

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

DOI

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

DOI

This release will adds five subcommands under mepo stash:

  • push <repo>
  • list
  • apply <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 fetch can now use --tags and --prune
  • mepo clone can now run mepo init for you if not done explicitly
  • mepo clone URL will do a git clone URL/cd/mepo init/mepo clone all in one shot
  • Better handling of hashes. components.yaml will now accept hash: a la tag: and branch:

Changes

  • mepo init and mepo clone have a slightly different interface if using a different yaml file. Since the ability of clone to use a URL, to pass a different yaml file, needs to be done with a flagged option: --config yamlfile

Fixes

  • mepo status won'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 - Add License

LICENSE.md was added.

- 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-only to mepo diff
  • Add colors to mepo status for non-original branches
  • Make checkout-if-exists more verbose
  • Make mepo commit act more like git 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 -

- Python
Published by pchakraborty over 6 years ago

mepo - Initial release of mepo

- Python
Published by pchakraborty over 6 years ago

mepo - stage/unstage

- Python
Published by pchakraborty 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

mepo - First release with checkout and status

- Python
Published by pchakraborty over 6 years ago