All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed mepo completion
- Added ability to print version info via
mepo --version
- Added install instructions for spack and brew tap
- Added tests for Registry and MepoComponent classes
- Full path of remote url is now stored in the state file
- Some refactor of component.py
- Removed MepoState dependency in git.py
-
Added
pyproject.toml
to aid withpip
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
-
Converted
mepo
to a Python project via the following renaming -- Addedsrc/mepo/__init__.py
-- Renamedmepo.d
->src/mepo
-- Renamedmepo.d/utest
->tests
-- Renameddoc
-->docs
-- Amepo
config file is now called amepo
registry -- More code reorganization -
Helper script
mepo
, used for development, moved to thebin
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
- Added new
--partial
option tomepo clone
with two settings:off
,blobless
, andtreeless
. 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
. Theblobless
option is useful for large repos that have a lot of binary files that you don't need. Thetreeless
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 ofmepo clone
. - Add a new section for
.mepoconfig
to allow users to set--partial
as a default formepo clone
.
- Fixes to allow mepo to work on older mepo clones that don't have ignore_submodules in their state
- Added new
ignore_submodules
field incomponents.yaml
to allow ignoring submodules in a repo. Currently used forstatus
anddiff
commands.
- Command
status
has now a--hashes
option that list current HEAD hash for each component.
- When running
compare
in default mode, size columns based on the longest branch name of a repo that has changed. This prevents odd column widths based on long branch names in repos that haven't changed
- Added new
reset
command to reset a mepo clone
- Updated GitHub Actions
- Added ability to do
mepo tag push --delete
so you can delete a tag on the remote
- Add new
changed-files
command to list all changed files vs original state
- Allow
checkout-if-exists
to work on tags or branches
- Add support for typechange in
mepo status
- Fixed issue where you could issue
mepo clone
in already cloned multirepos (#224)
- Changed StateDoesNotExistError and StateAlreadyInitializedError to be subclasses of
SystemExit
- Changed some git subcommands to use full local path
- Added
-b/--ignore-space-change
option tomepo diff
- Changed the default behavior of
compare
to only show differing repos. Use--all
to see all repos - Add
--nocolor
option tostatus
andcompare
(for unit testing) - Add
--wrap
option tocompare
(for unit testing) - Updated unit tests for new
compare
behavior
- Fixed the output of
mepo compare
to handle detached branch hashes
- Added
--ignore-case
option tomepo whereis
- Updated
mepo-cd
functions and aliases to use ignore-case variant ofmepo whereis --ignore-case
by default- This allows for simpler use of
mepo-cd
as you don't have to exactly match the name of a component
- This allows for simpler use of
- Added
--ignore-permissions
flag tostatus
anddiff
to allow the commands to ignore permissions changes - Add
--name-status
flag tomepo diff
-
When running
mepo compare
andmepo status
, detatched branches will also display the commit id:GEOSgcm_GridComp | (b) feature/aogcm (DH, 0793f7b2)
-
GitHub Actions updates
- Uses
pypy-3.8
specifically - Have
pip
install fromrequirements.txt
- Uses
- Added
CHANGELOG.md
- Added changelog enforcer
- Detach branches on clone
- Fix for
mepo save
- 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
- Make the
mepo pull
andmepo pull-all
commands verbose by default- The older, quieter behavior can be gotten by adding the new
--quiet
option topull
andpull-all
- The older, quieter behavior can be gotten by adding the new
- Fix bug in
mepo save
- Allow use of
hash:
key incomponents.yaml
- Allow
checkout
on all repos
- Fix bug in
tag
subcommand
-
The
fetch-all
command is removed and "subsumed" into thefetch
command. -
The
push-all
command was removed
- Add 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.
- Obey config file for no style. 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 incomponents.yaml
is the correct sytle.
- Changes to tag subcommand
mepo tag push
instead ofmepo push --tags
- Add mepo style support
- Add support for
.mepoconfig
file - Created
mepo push-all
- Allow
mepo tag create
andmepo tag delete
to work on all components
- Fixes to
mepo status
- Added
-q
flag for commands with--quiet
- Detect illegal
components.yaml
- Added useful prints to
checkout
anddevelop
- Clean up for
mepo save
- Fix for
mepo clone
- Fixes for
status
andcompare
- Fix bug in
mepo status
- Clean up odd
save
issue
- Add
mepo commit -a
- Fixed bug when doing
mepo clone URL
without--config
.
- Fix for using
config
with "all-in-one" clone
- Added
--force
flag forfetch
andfetch-all
- Add
--staged
option tomepo diff
- Fix for fixture initialization
- Fixed bug for CI systems
- Add ability to see fixture (see release notes for more)
- Add
mepo-cd.csh
- Fixes for
whereis
anddiff
- Updates to allow mepo clones to be moved (#106)
- A bit of nicety on
mepo status
for detatched HEAD states - Adds
mepo-cd.zsh
as I couldn't figure out how to get the bash script to work in zsh
- Bug fixes for
mepo save
- 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 mepo save
did not handle hashes well. There is no reason it couldn't save to a hash, but it labeled it as abranch
in the yaml file which, while not broken, was in consistent.
- The command would save the new yaml file in
- Add
dry-run
forcheckout-if-exists
- Add per-repo diff
- Added
mepo tag
commands - Added
.zenodo.json
file
- Update
mepo branch list
to work on one or more repos
- Add
restore-state
command- Note: at present this will restore EVERYTHING to the previous state. Not a repo here or there.
- Add
pull
,pull-all
andfetch-all
- Fix
.mepo
file on Darwin
- Updates to
clone
command
- Fix for
mepo push
- Add
mepo stash
- Updates for
clone
andfetch
commands
mepo status
won't crash if a repo is not on a tag or branch
- Update the CI to use a matrix on Linux and macOS of python3.x and pypy3
- Fix the unit tests
- Add license
- Fix bad shebang
- Add to
mepo-cd
functionality
- Add
mepo fetch
andmepo fetch --all
ability.
- Add ability for single editor for multi-repo commit
- Add
--name-only
tomepo diff
- Add colors to
mepo status
for non-original branches - Make
checkout-if-exists
more verbose - Make
mepo commit
act more likegit commit
- Add
checkout-if-exists
capability
- Add ability to work with symlinks
- Add the ability to have
recurse_submodules:
in the YAML file.
- Add
mepo diff
command - Add
CODEOWNERS
- Updates to
status
andcompare
- Add
mepo-cd
bash function
- Add GitHub Action for unit tests
- Add README
- Add
develop
command
- Lots of updates to internals
- Initial release of mepo
- Add stage and unstage
- Add init, clone, status, checkout, branch, diff, where, whereis, history, stage
- Add init, clone, status, checkout, branch, diff, where
- Add checkout and status