Revision history for App-FileSync
0.001.5 Sun Oct 25 12:53:45 PM EDT 2026
[ Bug Fixes ]
- Log::Abstraction 0.36 is now required, because the client logs its
run summary as structured fields in a trailing hashref. An older
copy, which the installer accepted, turned that into
"sync finishedHASH(0x...)" in the log file and an empty entry in an
array logger, so the counts were lost and t/settings.t failed its
seven logger assertions.
0.001.4 Sun Oct 25 09:31:17 AM EDT 2026
[ Bug Fixes ]
- t/ssh.t: the stand-in for ssh now names the perl running the tests on
its first line instead of "#!/usr/bin/env perl". The transport starts
that file as a program, so the kernel picked whichever perl came first
on PATH - on a smoke tester the system perl, which cannot see the
modules the build installed - and the filesync-server it then ran died
with "Can't locate Params/Validate/Strict.pm" against a build that never
lacked it (GitHub issue #4). The Windows wrapper already named $^X.
[ Tests ]
- t/ssh.t checks the interpreter line of the stand-in it writes, so the
PATH-dependent first line cannot come back unnoticed.
0.001.3 Sun Oct 25 07:25:08 AM EDT 2026
[ Documentation ]
- More improvements
[ Bug Fixes ]
- Bump minimim Config::Abstraction
0.001.2 Sat Oct 24 09:02:12 PM EDT 2026
[ Bug Fixes ]
- filesync-admin repo create names the server root and the directory
that blocks it when the root cannot be written, and says to chown
it to the running account or use --root elsewhere. It used to
report only "Permission denied" against a path below the root.
- That advice is given only when a directory really is unwritable, so
a full disk or a root that is a file keeps its own error.
[ Documentation ]
- The examples are split by machine - what to run on the
server, on each client, and from cron - and keep the master in a
home directory, so nothing needs sudo.
- What a /srv/filesync root needs instead, the wrapper that
adds --root to filesync-server, and the ssh key the first sync
requires.
- The backup and restore commands follow the example's master
layout, and make the backup directory before cron mirrors into it.
- The synopsis creates the repo first, so it runs as printed.
0.001.1 Sat Oct 24 09:52:47 AM EDT 2026
[ Bug Fixes ]
- Build: test on Windows with Perl 5.42 again. Its B::Hooks::EndOfScope
faults at exit, so the plain-Perl hook is used there.
- filesync, filesync-server and filesync-admin select that hook for
themselves on 5.42 for Windows, so it no longer has to be set to run
them; an implementation already in the environment is left alone.
A test checks the choice in a child process that starts without the
variable.
- Security: an ssh server of the form "-v@host" (or a program name
starting with "-") is refused; it was passed to ssh as an option.
- Security: client and repo names that are not plain ids ("../x",
over 64 characters) are refused by the server, admin and client.
- Server: a conflict copy is kept under the planned name whether or
not the client names it, and any other name is refused; acks are
accepted only for actions the client applies; get validates its
offset and caps its size; an upload larger than announced is
refused and discarded.
- Ignore: building a matcher no longer modifies the caller's pattern
list (which turned "!keep.tmp" into "keep.tmp" and could delete the
file remotely); "/top" anchors to the root; "build/" matches at any
depth.
- Trash: same-day versions sort numerically and are no longer capped
at .99. Each client repo has its own local trash; restore still
finds files in the old shared one.
- Admin: journal_read works when the server root contains spaces.
- All messages come from a catalogue (App::FileSync::I18N::en) and can
be translated; errors no longer show Perl file and line numbers
unless FILESYNC_TRACE is set.
- Internals: new Args, Base, Constants, I18N, IO and Platform modules;
private subs are enforced with Sub::Private; full POD.
- Removed the unused POSIX and Encode prerequisites.
- Build: requires Perl 5.14; declares ExtUtils::MakeMaker 6.64 as a
configure prerequisite so test prerequisites are honoured; the
gzip and (on macOS) gtar dist settings are now actually applied;
t/ and xt/ are not indexed; bug tracker link added.
- $VERSION is a version object (version->declare), so every tool
reads 0.001.1 as the dotted version v0.1.1.
- Every module and program carries the same GPL v2 licence notice.
0.001.0 Fri Oct 23 03:44:45 PM EDT 2026
First draft
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)