Sun Sep 8 19:17:26 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Dockerfile: fix whitespace inconsistencies We don't use hard tabs.


      M docker/Dockerfile

Sun Sep 8 19:05:42 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #116 from aspiers/fix-dot-ignore

Sun Sep 8 13:05:16 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * ignore based on package dirent name prior to dot- adjustment If
    `--dotfiles` was enabled, files in the package such as
    `dot-gitignore` would be translated to `.gitignore` and then
    ignored by the default ignore list.  However any file named
    `dot-*` in a package is obviously intended to be stowed as a dot
    file, so should not be ignored.

    To fix this, ignore based on the name in the package, not the 
    potentially translated name used for stowing.


      M NEWS
      M doc/stow.texi
      M lib/Stow.pm.in
      M t/dotfiles.t

Sun Sep 8 12:47:54 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * extract setup_package_ignore() into testutil.pm

      M t/ignore.t
      M t/testutil.pm

Sun Sep 8 12:43:46 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * extract setup_global_ignore() into testutil.pm

      M t/ignore.t
      M t/testutil.pm

Sun Sep 8 18:56:03 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #117 from aspiers/optional-pdf-build

Sun Sep 8 14:51:58 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * make build of PDF optional to avoid LaTeX dependency Fixes #95.


      M INSTALL.md
      M Makefile.am
      M NEWS
      M doc/HOWTO-RELEASE

Sun Sep 8 15:09:30 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * INSTALL.md: move clean-up to a separate section It's not part of the
    install process.


      M INSTALL.md

Sun Sep 8 14:52:49 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * update to autoconf 2.72

      M aclocal.m4

Sun Sep 8 16:23:35 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * NEWS: add other items since v2.4.0

      M NEWS

Sun Sep 8 13:28:45 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * NEWS: add entry for ternary precedence fix for Perl 5.40 This is the
    NEWS entry for #113.


      M NEWS

Sat Jul 13 17:07:02 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #114 from aspiers/perl-5.40

Sat Jul 13 17:04:03 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * ci: add Perl 5.40 to GitHub CI test matrix

      M .github/workflows/test.yml

Fri Jul 12 00:02:23 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #113 from wfrisch/2024-07-avoid_precedence_warning 
    avoid precedence warning

Thu Jul 11 09:48:46 2024 +0200  Wolfgang Frisch <wolfgang.frisch@suse.com>

    * avoid precedence warning Perl 5.40.0 extended the scope of the
    precedence warning to include ternary operators.

    <https://perldoc.perl.org/5.40.0/perldelta>

    Reported-By: Peter Sütterlin <P.Suetterlin@royac.iac.es>


      M bin/stow.in

Tue Jun 18 18:46:45 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #111 from jeremy-code/master

Sat Jun 15 13:03:07 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Fix parsing of regexp options like --override=bin|man Previously the
    \A and \z anchoring for --ignore / --override / --defer was being
    applied without wrapping the user-specified regexp in parentheses,
    so if it was something like bin|man then the anchor would only
    apply to one half of those two paths.  So add parentheses, and 
    also change from qr() to qr{} syntax to visually differentiate
    between regexp boundaries and parentheses inside the regexp.


      M bin/stow.in
      M t/cli_options.t
      M t/rc_options.t

Fri Jun 14 16:20:41 2024 -0700  Jeremy Nguyen <nguyen.jeremyt@gmail.com>

    * Use `shellwords` for `.stowrc` parsing
    - Use `shellwords` to parse `.stowrc` files from
    `Text::ParseWords`
    - Add test for `.stowrc` parsing with quotes
     - Add `stow directory` to `tmp-testing-trees` for testing

    This change allows `.stowrc` arguments to be parsed similar to
    shell arguments, where quotes can be used to group an argument
    with spaces.

    However, this change affects the behavior in --ignore, --defer,
    --override.

    (?^:$HOME\z)
    (?^:\A$HOME)
    (?^:\A$HOME)


      M bin/stow.in
      M doc/stow.texi
      M t/rc_options.t
      M t/testutil.pm

Mon Apr 8 00:40:23 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #99 from gutierri/patch/fixs-yes-apt

Sun Sep 18 03:13:56 2022 -0300  Gutierri Barboza <me@gutierri.me>

    * fix dockerfile apt-get without force-yes

      M docker/Dockerfile

Mon Apr 8 00:16:02 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Bump version to 2.4.1 for development of next release

      M META.json
      M META.yml
      M configure.ac

Mon Apr 8 00:13:57 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * HOWTO-RELEASE: fix previously missed rename from distclean 3aae830e
    changed the procedure from distclean to maintainer-clean, but
    missed changing this final detail.


      M doc/HOWTO-RELEASE

Sun Apr 7 23:10:08 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * HOWTO-RELEASE: add reminder to add/remove manual files in CVS

      M doc/HOWTO-RELEASE

Sun Apr 7 22:37:22 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * HOWTO-RELEASE: suggest using gnupload --dry-run first

      M doc/HOWTO-RELEASE

Sun Apr 7 20:09:43 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * HOWTO-RELEASE: add link to gnupload docs

      M doc/HOWTO-RELEASE

Sun Apr 7 18:55:18 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #108 from aspiers/release-v2.4.0

Sun Apr 7 18:54:44 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #97 from ilyagr/patch-1

Sun Apr 7 18:38:12 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Rebuild META.*

      M META.json
      M META.yml

Sun Apr 7 18:34:35 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * HOWTO-RELEASE: THANKS is no longer being updated

      M doc/HOWTO-RELEASE

Sun Apr 7 18:32:51 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Update NEWS for v2.4.0

      M NEWS

Sun Apr 7 18:24:49 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Bump version to 2.4.0

      M META.json
      M META.yml
      M NEWS
      M configure.ac

Sun Apr 7 18:22:56 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Add details on how to view coverage locally Unfortunately for now,
    Coveralls reports don't include source due to #84, but this is a
    good workaround.


      M CONTRIBUTING.md
      M Makefile.am

Sun Apr 7 18:00:03 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow: remove misleading comment about current dir The current
    directory is changed by within_target_do() which is called by
    `plan_stow()`, `plan_unstow()`, and `process_tasks()`.  It is not 
    changed when constructing a new `Stow` object, so remove this
    outdated and misleading comment.

    Fixes #102.


      M bin/stow.in

Sun Apr 7 17:56:54 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #107 from aspiers/improve-dotfiles-fix

Sun Apr 7 17:44:44 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow.t: move final set of tests into a subtest

      M t/unstow.t

Sun Apr 7 17:24:13 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow.t: remove superfluous spaces

      M t/unstow.t

Sun Apr 7 17:19:37 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Fix unstowing with `--compat --dotfiles` Unstowing with `--dotfiles`
    didn't work with `--compat`, because when traversing the target
    tree rather than the package tree, there was no mechanism for
    mapping a `.foo` file or directory back to its original
    `dot-foo` and determine whether it should be unstowed.

    So add a reverse `unadjust_dotfile()` mapping mechanism to support 
    this.


      M lib/Stow.pm.in
      M lib/Stow/Util.pm.in
      M t/dotfiles.t

Sun Apr 7 15:57:03 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/dotfiles.t: improve language in test names and assertion messages We
    use the term "directory" (or "dir" for short) rather than
    "folder". Also explicitly say whether a test is stowing or
    unstowing, and fix the odd typo.


      M t/dotfiles.t

Tue Apr 2 00:06:38 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_contents: fix bugs and corner cases with type mismatch conflicts 
    If the target directory as a file named X and a package has a 
    directory named X, or vice-versa, then it is impossible for Stow 
    to stow that entry X from the package, even if --adopt is
    supplied.

    However we were previously only handling the former case, and not
    the latter, and the test for the former was actually broken.  So
    fix stow_contents() to handle both cases correctly, fix the broken
    test, and add a new test for the latter case.


      M lib/Stow.pm.in
      M t/stow.t

Sun Apr 7 15:42:06 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow.t: create a bunch of unowned files to make tests more robust 
    This should make it harder for Stow to do the right thing.


      M t/unstow.t

Mon Apr 1 22:50:58 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * dotfiles: switch {un,}stow_{contents,node}() recursion parameters Stow
    walks the package and target tree hierarchies by using mutually 
    recursive pairs of functions:

    - `stow_contents()` and `stow_node()`
    - `unstow_contents()` and `unstow_node()`

    As Stow runs its planning from the target directory (`plan_*()`
    both call `within_target_do()`), previously the parameters for
    these included:

    - `$target_subpath` (or `$target_subdir` in the `*_node()`
    functions):
     the relative path from the target top-level directory to the
    target
     subdirectory (initially `.` at the beginning of recursion).  For
     example, this could be `dir1/subdir1/file1`.

    - `$source`: the relative path from the target _subdirectory_
    (N.B. _not_
     top-level directory) to the package subdirectory.  For example,
    if
     the relative path to the Stow directory is `../stow`, this could
    be
     `../../../stow/pkg1/dir1/subdir1/file1`.  This is used when
    stowing
     to construct a new link, or when unstowing to detect whether the
     link can be unstowed.

    Each time it descends into a further subdirectory of the target
    and package, it appends the new path segment onto both of these,
    and also prefixes `$source` with another `..`.  When the
    `--dotfiles` parameter is enabled, it adjusts `$target_subdir`,
    performing the `dot-foo` =>
    `.foo` adjustment on all segments of the path in one go.  In this 
    case, `$target_subpath` could be something like
    `.dir1/subdir1/file1`, and the corresponding `$source` could be
    something like
    `../../../stow/pkg1/dot-dir1/subdir1/file1`.

    However this doesn't leave an easy way to obtain the relative path 
    from the target _top-level_ directory to the package subdirectory
    (i.e. `../stow/pkg1/dot-dir1/subdir1/file1`), which is needed for 
    checking its existence and if necessary iterating over its
    contents.

    The current implementation solves this by including an extra
    `$level` parameter which tracks the recursion depth, and uses that
    to strip the right number of leading path segments off the front
    of `$source`.
    (In the above example, it would remove `../..`.)

    This implementation isn't the most elegant because:

    - It involves adding things to `$source` and then removing them
    again.

    - It performs the `dot-` => `.` adjustment on every path segment
     at each level, which is overkill, since when recursing down a
    level,
     only adjustment on the final subdirectory is required since the
    higher
     segments have already had any required adjustment.

      This in turn requires `adjust_dotfile` to be more complex than
    it
     needs to be.

      It also prevents a potential future where we might want Stow to
     optionally start iterating from within a subdirectory of the
    whole
     package install image / target tree, avoiding adjustment at
    higher
     levels and only doing it at the levels below the starting point.

    - It requires passing an extra `$level` parameter which can be
     automatically calculated simply by counting the number of slashes
     in `$target_subpath`.

    So change the `$source` recursion parameter to instead track the 
    relative path from the top-level package directory to the package 
    subdirectory or file being considered for (un)stowing, and rename
    it to avoid the ambiguity caused by the word "source".

    Also automatically calculate the depth simply by counting the
    number of slashes, and reconstruct `$source` when needed by
    combining the relative path to the Stow directory with the package
    name and
    `$target_subpath`.

    Closes #33.


      M lib/Stow.pm.in
      M lib/Stow/Util.pm.in
      M t/dotfiles.t

Sun Apr 7 13:08:56 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_link_node(): don't register conflicts when unstowing unowned
    links

      M lib/Stow.pm.in
      M t/unstow.t

Tue Apr 2 00:36:51 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * merge unstow_orig.t into unstow.t and fix unstowing logic There was a
    ton of duplication which is not maintainable, so refactor 
    everything into a single test which still covers the differences.

    This in turn revealed some issues in the unstowing logic:

    - We shouldn't conflict if we find a file which isn't a link or a
     directory; we can just skip over it.

    - Unstowing with `--dotfiles` was using the wrong variable to
    obtain
     the package path, and as a result having to perform an
    unnecessary
     call to `adjust_dotfile()`.

    So fix those at the same time.


      M .gitignore
      M MANIFEST
      M MANIFEST.SKIP
      M Makefile.am
      M lib/Stow.pm.in
      M t/dotfiles.t
      M t/testutil.pm
      M t/unstow.t
      D t/unstow_orig.t

Sun Apr 7 14:09:15 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * allow playground/ directory for testing stuff

      M .gitignore
      M CONTRIBUTING.md
      M MANIFEST.SKIP

Sun Apr 7 14:08:59 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * tidy up MANIFEST.SKIP

      M MANIFEST.SKIP

Sun Apr 7 13:08:27 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * read_a_link(): clarify debug message when it's a real link

      M lib/Stow.pm.in

Sun Apr 7 12:51:21 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Fix Dockerfile by updating from jessie to bookworm

      M docker/Dockerfile

Sat Apr 6 15:37:36 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #106 from aspiers/dev

Sat Apr 6 15:09:53 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Update manifest files to keep ./Build distcheck happy

      M MANIFEST
      M MANIFEST.SKIP

Sat Apr 6 14:59:52 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Revert "testutil: Add sanity check for cwd" This reverts commit
    5d4e68291e24558a51376cf218cca9a1142dfff1.

    It turns out that this broke `make distcheck`.


      M t/testutil.pm

Sat Apr 6 14:51:53 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Revert "Remove unnecessary AM_MAKEINFOFLAGS tweak" This reverts commit
    1a20a3f7eec823820b5cd01d566244e4fa968b73.

    It turns out that `texi2dvi` _does_ require `-I $(srcdir)` for
    `@verbatiminclude default-ignore-list` to work after all.  It's
    needed not for a normal docs build, but when `make distcheck` is
    run, presumably because `distcheck` runs from a different
    directory.


      M Makefile.am
      M configure.ac

Sat Apr 6 14:39:16 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Makefile.am: include DEFAULT_IGNORE_LIST in doc_deps

      M Makefile.am

Sat Apr 6 13:33:53 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * iterate over directories in sorted order This makes behaviour more
    deterministic, and makes debugging easier.


      M lib/Stow.pm.in

Sat Apr 6 11:59:23 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow.t: convert to use subtests

      M t/unstow.t

Sat Apr 6 11:58:56 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow_orig.t: use like() for regexp matching tests This is better
    because it outputs the mismatching value when the matching check
    fails.


      M t/unstow_orig.t

Sat Apr 6 11:44:36 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow_orig.t: use is() for equality tests This is better because it
    outputs the mismatching values when the equality check fails.


      M t/unstow_orig.t

Sat Apr 6 11:12:15 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * tests: use stderr_like() instead of home-grown STDERR capturing The
    STDERR capturing in testutil just reinvents Test::Output which we
    already use in chkstow.t, so it's pointless to reinvent that
    wheel.


      M t/stow.t
      M t/testutil.pm
      M t/unstow.t
      M t/unstow_orig.t

Thu Apr 4 00:36:37 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * testutil: rename parameter names to be less confusing
    $target was the source of the link, and $source was the target
    (destination) of the link.  Obviously this was hopelessly 
    confusing, so rename to avoid this.


      M t/testutil.pm

Fri Apr 5 22:24:00 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * manual: clarify the pros and cons and history of --compat

      M doc/stow.texi

Fri Apr 5 01:57:29 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Merge pull request #105 from aspiers/github-workflow

Fri Apr 5 00:51:27 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Port Travis CI workflow to a GitHub CI workflow Travis is no longer
    free, so move to GitHub.  (In the future ideally we should reduce
    dependencies on proprietary platforms.)


      A .coveralls.yml
      A .github/workflows/test.yml
      M MANIFEST.SKIP

Mon Apr 1 23:25:46 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/stow.t: fix typos, whitespace, and ordering of lines

      M t/stow.t

Mon Apr 1 23:31:36 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * testutil: use croak() instead of die() for more useful errors

      M t/testutil.pm

Mon Apr 1 22:56:32 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/stow: use like() instead of ok(... =~ /.../)

      M t/stow.t

Mon Apr 1 23:37:06 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * rename $path => $target_path in node helpers is_a_node(), is_a_dir(),
    is_a_link() all operate on paths within the target directory, so
    make this explicit by avoiding the vague variable name "$path".


      M lib/Stow.pm.in

Mon Apr 1 22:32:24 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * fold_tree: rename $target parameter to $target_subdir
    $target is vague and could refer to the top-level target
    directory, so rename to clarify.


      M lib/Stow.pm.in

Mon Apr 1 22:30:55 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * fold_tree: rename $source parameter to $pkg_subpath
    $source is vague and confusing as per the manual.


      M lib/Stow.pm.in

Mon Apr 1 22:29:03 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node / unstow_existing_node: rename foldable return value
    $parent is a bit vague so rename to $parent_in_pkg.


      M lib/Stow.pm.in

Mon Apr 1 21:54:15 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_valid_link: rename $existing_path Unqualified references to
    "path" are horribly vague, so rename to
    $existing_pkg_path_from_cwd for clarity.


      M lib/Stow.pm.in

Mon Apr 1 21:57:36 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_node: rename $existing_path Unqualified references to "path" are
    horribly vague, so rename to
    $existing_pkg_path_from_cwd for clarity.


      M lib/Stow.pm.in

Mon Apr 1 21:51:24 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * link_owned_by_package: rename $source => $link_dest The use of the
    word "source" to describe a link's destination is confusing in the
    context of Stow for reasons explained in the manual.

    So rename the $source variable to avoid this.


      M lib/Stow.pm.in

Mon Apr 1 21:48:33 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * remove or rename XXX Remove old XXX FIXMEs which tell us nothing
    useful and may not be relevant any more.

    Also rename another XXX to an industry-standard FIXME.


      M lib/Stow.pm.in

Mon Apr 1 21:36:58 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node: remove redundant return

      M lib/Stow.pm.in

Mon Apr 1 21:32:30 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Change debug indentation in some helpers These helpers can be called
    at more deeply nested levels, so they should be indented more than
    they were.


      M lib/Stow.pm.in

Mon Apr 1 21:55:51 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_link_node: rename $existing_path Unqualified references to
    "path" are horribly vague, so rename to
    $existing_pkg_path_from_cwd for clarity.


      M lib/Stow.pm.in

Mon Apr 1 21:26:21 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_link_node: rename $existing_source => $link_dest The use of the
    word "source" to describe a link's destination is confusing in the
    context of Stow for reasons explained in the manual.

    So rename the $existing_source variable to $link_dest avoid this.


      M lib/Stow.pm.in

Mon Apr 1 21:23:35 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_contents: remove reference to "source" The use of the word
    "source" is confusing in the context of Stow for reasons explained
    in the manual.


      M lib/Stow.pm.in

Mon Apr 1 21:24:35 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_node: remove comments about implementation details from POD These
    don't add much value, and the reference to $source was out of date
    anyway.


      M lib/Stow.pm.in

Mon Apr 1 21:21:06 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_node: rename $second_source => $link_dest The use of the word
    "source" to describe a link's destination is confusing in the
    context of Stow for reasons explained in the manual.

    So rename the $second_source variable to avoid this.


      M lib/Stow.pm.in

Mon Apr 1 21:33:55 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * foldable: make more understandable Improve variable names, POD, and
    add helpful comments.


      M lib/Stow.pm.in

Mon Apr 1 19:57:54 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * foldable: rename $path to $target_node_path
    $path is horribly vague, so rename it to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 18:49:01 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * foldable: add debug for different cases when not foldable

      M lib/Stow.pm.in

Mon Apr 1 19:53:56 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * read_a_link: improve variable names
    $path is horribly vague, so rename to $link to be more
    informative.

    Also the use of "$target" to describe a link's destination is very 
    confusing in the context of Stow for reasons explained in the
    manual. So rename to $link_dest.


      M lib/Stow.pm.in

Mon Apr 1 17:59:25 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * parent_link_scheduled_for_removal: tweak debug

      M lib/Stow.pm.in

Mon Apr 1 17:00:13 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/unstow_orig: split into subtests

      M t/unstow_orig.t

Mon Apr 1 16:34:01 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * foldable: rename $target => $target_subdir The $target variable was
    ambiguous, as it could have referred to the path to the target
    directory, or the path to a sub-directory in the target, as well
    as its intended meaning of a subpath relative to the target
    directory.  So rename it to try to find the balance between 
    clarity and verbosity.


      M NEWS
      M lib/Stow.pm.in

Mon Apr 1 16:18:52 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * find_stowed_path: rename $path / $dest to $pkg_path_from_cwd
    $path is horribly vague, so rename to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 16:16:52 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node: rename $path to $pkg_path_from_cwd
    $path is horribly vague, so rename to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 16:08:56 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * link_dest_within_stow_dir: rename $path to $pkg_subpath
    $path is horribly vague, so rename to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 16:07:09 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * find_containing_marked_stow_dir: rename $path to $pkg_path_from_cwd
    $path is horribly vague, so rename to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 16:06:12 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_* helpers: rename $path to $pkg_path_from_cwd
    $path is horribly vague, so rename to be more informative.


      M lib/Stow.pm.in

Mon Apr 1 15:58:09 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * marked_stow_dir: rename $path to $dir It's always a directory, so make
    this explicit.


      M lib/Stow.pm.in

Mon Apr 1 15:49:19 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * find_stowed_path: reintroduce missing comment lines These lines were
    accidentally removed by 84367681.


      M lib/Stow.pm.in

Mon Apr 1 15:15:58 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_contents / unstow_node: rename $target => $target_sub{dir,path} 
    This is very similar to a previous commit which did the same
    rename in stow_node().

    The $target variable was ambiguous, as it could have referred to
    the path to the target directory, or the path to a sub-directory
    in the target, as well as its intended meaning of a subpath
    relative to the target directory.  So rename it to try to find the
    balance between clarity and verbosity.


      M lib/Stow.pm.in

Mon Apr 1 15:12:46 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * manual: use American punctuation of "vs." GNU and Stow are both
    originally from the USA, so it makes sense to stay consistent with
    American English.


      M doc/stow.texi

Mon Apr 1 13:00:51 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Remove unstow_*_orig() functions Refactor the compat mode code to
    reuse the existing unstow_contents() and unstow_node().  This
    allows us to remove the parallel versions in 
    unstow_contents_orig() and unstow_node(), which contained a lot of 
    duplicated code and were a significant maintenance burden.


      M lib/Stow.pm.in

Mon Apr 1 12:13:21 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * emacs: tweak more cperl indentation config to match existing style

      M .dir-locals.el

Mon Apr 1 12:12:27 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node_orig: replace a bunch of duplicated code with
    unstow_link_node()

      M lib/Stow.pm.in

Mon Apr 1 11:49:07 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node: extract new unstow_existing_node() sub

      M lib/Stow.pm.in

Mon Apr 1 11:46:10 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node: extract new unstow_link_node() sub

      M lib/Stow.pm.in

Mon Apr 1 11:40:26 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * unstow_node: extract new unstow_valid_link() sub

      M lib/Stow.pm.in

Mon Apr 1 11:17:59 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_node: rename $target => $target_subpath The $target variable was
    ambiguous, as it could have referred to the path to the target
    directory, or the path to a sub-directory in the target, as well
    as its intended meaning of a subpath relative to the target
    directory.  So rename it to try to find the balance between 
    clarity and verbosity.


      M lib/Stow.pm.in

Mon Apr 1 02:30:47 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/dotfiles.t: switch to subtests

      M t/dotfiles.t

Mon Apr 1 01:55:31 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * t/stow: convert to subtests()

      M t/stow.t

Mon Apr 1 00:39:18 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * rename $existing_source => $existing_link_dest Source can be
    ambiguous, as mentioned in the manual.


      M lib/Stow.pm.in

Mon Apr 1 00:35:35 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * stow_node(): fix odd whitespace

      M lib/Stow.pm.in

Mon Apr 1 00:34:39 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * should_skip_target(): add docs explaining its purpose

      M lib/Stow.pm.in

Mon Apr 1 00:34:19 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * do_link(): improve variable names

      M lib/Stow.pm.in

Mon Apr 1 00:07:06 2024 +0100  Adam Spiers <stow@adamspiers.org>

    * Add emacs config to prevent insertion of hard tabs

      M .dir-locals.el

