For new changes, please see the current CHANGELOG.
- All notable changes to this project will be documented in this file
- All changes are from @nickgerace unless otherwise specified
- The format is based on Keep a Changelog and this project adheres to Semantic Versioning
Please see CHANGELOG_PRE_CALVER_POST_V4.
- Ability to ignore config file options
- Ability to print merged config options
- Ability to specify path to
git - Ability to store default path target in config file (defaults to current working directory)
- Ability to use config file in
$HOME/.config/gfold/gfold.jsonand{FOLDERID_Profile}\.config\gfold\gfold.json - Ability to use old display mode with
--classicflag and store preference in config file - Formal CLI parsing library,
argh - Install and uninstall scripts
- New display mode that avoids grouping repositories (API-breaking since this is the new default display mode)
- Codebase to a domain-driven architecture (major refactor)
- Mention of the deprecated, old Homebrew tap in the README
- Short
-hflag due to CLI crate addition (argh)
- Evaluated using
tracingandtracing-subscriberoverlogandenv_logger, but due to their combined larger size, the logging crates remain the same as before. - The config file can be non-existent, empty, partially filled out or completely filled out. There's also an option to ignore the config file completely and only use CLI options.
- This crate has used other CLI parsing libraries in the past, and recently did not use any, but with manual testing and publicly available benchmarks,
arghis now in use.
- Misc package bumps
- Logger that can be set via an environment variable (
RUST_LOG)
- Permission denied errors to be logged rather than displayed to
stderr
- Ensure
crates.ioandgittag are in sync (very slight and accidental derivation for2.0.0)
- Discrete Code of Conduct file
- Unpushed commit checking by default (greedy static analysis, so this may need to be tuned for edge cases)
gitCLI wrapper instead of Git library usage due to security, Git already being installed, inconsistencies between the library and the CLI, and more
- Codebase re-write geared towards data-efficiency and parallelism
- Dramatic runtime speed and binary size improvements (consistently able to reproduce, but heavily variable based on payload, OS, etc.)
- Entire structure from library-driven to application-driven (no
lib.rs)
- All CLI flags except for
-h/--helpand-V/--version - CLI crate since it is unneeded
- Git library usage in favor of leveraging
gitsubcommands due to security, Git already being installed, inconsistencies between the library and the CLI, and more DEVELOPING.mdandEXTRA.mdsince they were outdated/unimportantlib.rsand the crate's library-based components
- Misc package bumps
- Continue upon PermissionDenied errors rather than exiting
- Documentation to be moved to the new
docsdirectory
- Config type to be embedded within the Driver
- Not in public library modules, but this should improve generation efficiency
-d/--debugflag since all logging has been removed from the librariy, andmain.rsdoes not logenv_loggercratelogcrate- Logging from the entire library in favor of returning errors when needed and handling when possible/preferred
- Bold table headers instead of repo names
- Extra newline before first entry when printing all tables
- Middleware
runfunction inlib.rssince it's unecessary and unintuitive- Before, you used a type from the
drivermodule as a parameter forrun - Now, you only use types from
driver
- Before, you used a type from the
- Config management to be done by applications consuming the library (moved out of
lib.rs) - Driver module to be public
- Printing to STDOUT to be done by applications consuming the library (moved out of
lib.rs) TableWrappertype to be a private, internal type
- Shallow search flag to disable recursive search (accessible via
-s/--shallow)
- Binary size to be ~60% of the size of
gfold 1.0.4- Primarily, this was achieved by removing unused default features from imported crates
- Runtime speed is the same, better, or more consistent
- Default search behavior to be recursive rather than shallow
- Short flag for
--skip-sortfrom-sto-x - Workspace implementation to a single crate (similar to before
gfld)
gfld, the lightweight version ofgfolddue the following reasons:- its over ~105% average slower runtime speed (despite it being ~40% of the size)
- printing to STDOUT was not consistent in subcommand scenarios
- Recursive flag since
gfolduses recursive search by default
- Fixed final output order (sorted by name, then by status)
- Directory name finder to default to the current working directory if empty (
gfld) - Misc. optimizations in
gfld - Release profile optimizations to be at workspace scope for binaries
gfldoutput to not include parent root since all results started with the same string
Cargo.lockto the workspace to fix AUR builds
- CI to use
--lockedfor builds
- A brand new, minimal CLI:
gfld DEVELOPING.mdfor instructions on buildinggfld
- Documentation to include
gfld - GitHub issue template to include
gfldinformation - GitHub PR CI to only build for Linux while keeping macOS and Windows for release CI
- The repository to be split into two crates:
gfoldandgfld - Unnecessary
PathBufusages toPathwhen possible inutil.rs
- Release workflow for GitHub actions (now, it is "merge only")
- Uploaded binaries due to lack of checksums and maintenance
- RELEASE file for releasing
gfold
- README installation section to be condensed
- LICENSE to not use copyright dates or name (reduce maintenance)
- Makefile in order to be cross-platform-friendly
- Email display feature
- Include standard directory feature
- Shorthand flag for all features without one
- Directory walking to skip hidden directories
- Repository opening check to log error in debug mode rather than panic
- File header comments
- Prettytable macros
- Dependencies section to CHANGELOG
paruto suggested AUR helpers in README
- All CRLF files to LF
- Condense tests into loops where possible
- Label
unpush_checkas an experimental feature macos-amd64todarwin-amd64unpush_checkfromdisabletoenable
- Disable unpushed commit check flag and functionality
- Logging for origin and local reference names for unpushed commit check
gfold --versionto issue template- Unpush functionality (again)
- Unpush function to only return boolean
- Contributing section from README to reduce requirements
- Empty results message since it was potentially misleading
- Condition enum for adding rows to final table
- Debug flag
- Many debug statements for the new debug flag
- Bare repository checking to original behavior
util.rsresults generation to include Condition enum
- Carets from
Cargo.tomlto maintain stability - Unpush functionality temporarily
- Debugging calls for general usage and the new unpushed commit code
- Derive debug to the
Configstruct - Lightweight logging stack with
env_loggerandlog - Two files:
driver.rsandutil.rs - Unpushed commit status functionality and output
- Bare repository detection to use upstream function
- Library contents into
driver.rsandutil.rsthrough a major refactor
- In-depth description of the
runfunction
- Consolidated boolean test permutations into one test
- All non-public comments in
*.rsfiles
- Crate to crates.io
- Crates.io publishing requirements to
[package]inCargo.toml - Homebrew tap
- Library description to
lib.rs
- Dependency versioning to use carets
- README mentions of specific version tags
- README plaintext blocks to single quotes when mixed with formatted text
- README to sort installation method by package managers first
- Public structs and functions without only
run(primary backend driver) remaining
- No color flag and functionality
- Pull request template
- Code of Conduct link
- GitHub issue template
- GitHub pull request template
- LICENSE to be extended through 2021
- Match blocks in
lib.rsto be consolidated - Nearly all contents of
lib.rsto return errors back to the calling function inmain.rs
- Duplicate code related to the match block consolidation
- Doc comments and
cargo doctoreleasetarget eyrefor simple backtrace reportinggfold-binto AUR portion of READMElib.rsas part of major refactor
- Pre-build Makefile targets to be consolidated
- Refactor source code to be driven by a library, helmed by
lib.rs
util.rsandgfold.rsas part of major refactor
- GitHub release downloads to README
- Binary publishing workflow to the dummy file
- Existing merge workflow to use debug building instead of release building
- Makefile target containing the old default branch name
- Makefile target for statically-linked building
- Release dummy GitHub Action
- Version README badge
- A reduction to CI build time and complexity by combining the test and check steps,
- GitHub workflow "merge" file name to "merge.yml"
- GitHub workflow name to "merge"
- OS compatibility claims in README through a simplified list
- README badges to use shields.io
- MUSL mentions in docs
- Recursive search feature and flag
- Skip sort feature and flag
- Unit tests for recursive search and skip sort
- AUR PKGBUILD GitHub repository to README
- Results and TableWrapper structs, and relevant functions,
- Three methods for Results struct (printing/sorting/populating results)
- Make targets for
run-recursiveandinstall-local
- Switch from
walk_dirfunction to object-driven harness for execution - Move
walk_dirfunction logic toResultsmethod - Function
is_git_repoto its own file - Any unnecessary match block to use "expect" instead
- Cargo install to use a specific tag
- Version upgrade workflow to Makefile
- Leftover "FIXME" comments for recursive search ideas
- Changelog
- Tags automation
- Example output to use mythical repositories
- Path flag to positional argument
- Switched to structopt library for CLI parsing
- Tag v0.3.0 (duplicate of 0.3.0 with the "v" character)
- All GitHub releases before 0.3.1
- Releases information from README
- Add AUR installation documentation
- Add AUR packages from @orhun
- Switch to Apache 2.0 license from MIT license
- Reorganize build tags, and add test build target
- Handling for bare repositories to print their status to STDOUT with the mentorship of @yaahc
- "Continue" to the next repository object if the current object is bare
- Release availability in README
- Experimental statically-linked, MUSL support
- Switched to prettytable-rs
- Unit tests to work with prettytable-rs
- Example output, contributors, and usage in README
- Building for Windows, macOS, and Linux amd64 in CI pipeline from @jrcichra
- Base contents