Skip to content

Latest commit

 

History

History
159 lines (97 loc) · 7.99 KB

File metadata and controls

159 lines (97 loc) · 7.99 KB

Changelog

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.

1.6.0 - 2025-07-09

Added

  • Two-Stage Filtering: Added a new --include (-i) option to specify an "allow-list" of files using an ERE pattern. This enables much more powerful and precise file selection.

Changed

  • Filtering Pipeline Overhaul: The core filtering logic was refactored into a sequential, two-stage process. The --include filter is now applied first to create an initial set, and the --exclude filter is then applied to that set.
  • Transparent Reporting: The report output has been significantly enhanced with a new NAME-BASED FILTERING REPORT section. This gives users a clear, explicit breakdown of which files were selected or rejected by the --include and --exclude filters.
  • Internal State Management: Replaced the simple path_is_included model with a more robust "three-bucket" system (path_is_rejected_by_include, path_is_rejected_by_exclude, path_is_selected_for_analysis), improving code clarity and maintainability.

Fixed

  • Concatenation Safety: Hardened the logic for identifying concatenatable files to ensure that special file types (symlinks, submodules, LFS pointers) are never included in the concatenation output, even if their blob content would otherwise pass safety checks.

1.5.0 - 2025-07-06

Added

  • Modern Command-Line Interface: The script now supports a full-featured CLI, including:
    • Long options for all arguments (e.g., --exclude, --ref) for improved readability in scripts.
    • Assignment-style options (e.g., --ref=develop).
    • A standard --help flag (-h) for displaying usage information.
    • A standard --version flag for checking the installed version.

Changed

  • Argument Parser Overhaul: Replaced the legacy getopts parser with a robust, custom implementation to enable the new CLI features and provide more resilient error handling for arguments.
  • Documentation Sync: Updated all user-facing documentation (README.md, man page, and the script's header comments) to reflect the new command options and ensure consistency.

1.4.4 - 2025-07-06

Changed

  • Project Structure: Moved the main executable from src/ to a conventional bin/ directory to improve standardization.
  • Installation: The script is now installed with its major version number as a suffix (e.g., git-subtree-report-1). This prevents conflicts and allows for future parallel installations of different major versions.
  • Updated all documentation, examples, and build configurations to reflect the new file location and versioned command name.

1.4.3 - 2025-07-06

Changed

  • Refined the language and improved the clarity of all historical entries in the CHANGELOG.md file for better readability and historical accuracy.

1.4.2 - 2025-07-06

Added

  • Desktop integration files, including AppStream metadata (.metainfo.xml) and a .desktop entry, allowing the application to be discoverable in Linux software centers and application menus.

Changed

  • The Meson build system was updated to install the new desktop integration files to their standard system locations.

1.4.1 - 2025-07-05

Fixed

  • Corrected all documentation (man page, README.md) and report output to accurately state that the -e exclusion filter uses Extended Regular Expressions (ERE) and not Perl-compatible regex, aligning the documentation with the actual behavior of Bash's [[ =~ ... ]] operator.

1.4.0 - 2025-07-05

Added

  • A new, centralized error handling system (fail_with) that provides structured, three-part error messages: a machine-parsable error code, a description of the situation, and actionable advice on how to resolve the issue.

Changed

  • Replaced all ad-hoc exit calls and trap commands with the new centralized system for consistent, maintainable, and user-friendly error reporting.
  • Improved SIGPIPE handling to provide clearer feedback when output is piped to a command like head.

1.3.0 - 2025-07-05

Security

  • Hardened the script against potential Time-of-Check, Time-of-Use (TOCTOU) race conditions. The script now verifies that no component of the path provided via the -C argument is a symbolic link before changing directories, preventing malicious path swapping during execution.

1.2.0 - 2025-07-04

Added

  • The report's "Exclusion Details" section now provides full transparency by listing the path and size of every file filtered by an exclusion pattern.

Changed

  • Report statistics (e.g., file category counts) are now presented with percentages for a clearer at-a-glance analysis of repository composition.
  • Improved the clarity of report labels (e.g., "Total size (included files)") and standardized the formatting of zero-value sizes to remove ambiguity.

1.1.1 - 2025-04-18

Changed

  • Overhauled the installation instructions in README.md to use the standard install command, provide platform-specific guidance for Linux and Windows, and clarify the Meson build workflow.

1.1.0 - 2025-04-18

Changed

  • Refactored the core analysis engine to be "blob-centric" instead of "path-centric," significantly improving performance on repositories with duplicate file content by analyzing each unique blob only once.
  • Improved code clarity and maintainability by evolving the internal data model to distinguish between path-based properties (e.g., path_is_symlink) and content-based properties (e.g., blob_is_safe).

1.0.2 - 2025-04-17

Added

  • A comprehensive man(1) page providing integrated, offline help, bringing the tool in line with standard UNIX command-line utilities.

Changed

  • Updated the Meson build system to handle the installation and packaging of the new man page.

1.0.1 - 2025-04-17

Added

  • A meson.build file to provide a standardized, dependency-aware method for installing the script and its documentation.
  • Concrete example output files (repo_commit.txt, repo_commit.log) to the repository for user reference.

Changed

  • Updated README.md with instructions for the new Meson build system.

1.0.0 - 2025-04-17

Added

  • Initial release of git-subtree-report.
  • Core functionality for Git tree parsing and file analysis without checkout.
  • Content safety validation system for null bytes, invalid UTF-8, and non-printable characters.
  • Support for submodules, symbolic links, and LFS pointers.
  • Command-line options for specifying repository, subtree, commit reference, and exclusion patterns.
  • Concatenation output mode (-o).
  • Comprehensive README.md, LICENSE.md, and project scaffolding.