Rudimentary docs for ext file versioning
This commit is contained in:
+49
-1
@@ -2,7 +2,7 @@ File Versioning
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
.. todo::
|
.. todo::
|
||||||
External versioning requires documenting.
|
External versioning needs example for Windows.
|
||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
@@ -59,3 +59,51 @@ Until Maximum Age
|
|||||||
The maximum time to keep a version in days. For example, to keep replaced or
|
The maximum time to keep a version in days. For example, to keep replaced or
|
||||||
deleted files in the ".stversions" folder for an entire year, use 365. If
|
deleted files in the ".stversions" folder for an entire year, use 365. If
|
||||||
only or 10 days, use 10. **Note: Set to 0 to keep versions forever.**
|
only or 10 days, use 10. **Note: Set to 0 to keep versions forever.**
|
||||||
|
|
||||||
|
External File Versioning
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
This versioning method delegates the decision on what to do to an external
|
||||||
|
command (program or script). The only configuration option is the name of the
|
||||||
|
command. This should be an absolute path name. Just prior to a file being
|
||||||
|
replaced, the command will be run with two parameters: the path to the folder,
|
||||||
|
and the path to the file within the folder.
|
||||||
|
|
||||||
|
Example for Unixes
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Lets say I want to keep the latest version of each file as they are replaced
|
||||||
|
or removed; essentially I want a "trash can"-like behavior. For this, I create
|
||||||
|
the following script and store it as ``/Users/jb/bin/onlylatest.sh`` (i.e. the
|
||||||
|
``bin`` directory in my home directory):
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Where I want my versions stored
|
||||||
|
versionspath=~/.trashcan
|
||||||
|
|
||||||
|
# The parameters we get from Syncthing
|
||||||
|
folderpath="$1"
|
||||||
|
filepath="$2"
|
||||||
|
|
||||||
|
# First ensure the dir where we need to store the file exists
|
||||||
|
mkdir -p `dirname "$versionspath/$filepath"`
|
||||||
|
# Then move the file there
|
||||||
|
mv -f "$folderpath/$filepath" "$versionspath/$filepath"
|
||||||
|
|
||||||
|
I must ensure that the script has execute permissions (``chmod 755
|
||||||
|
onlylatest.sh``), then configure Syncthing with the above path as the command
|
||||||
|
name.
|
||||||
|
|
||||||
|
Lets assume I have a folder "default" in ~/Sync, and that within that folder
|
||||||
|
there is a file ``docs/letter.txt`` that is being replaced or deleted. The
|
||||||
|
script will be called as if I ran this from the command line::
|
||||||
|
|
||||||
|
$ /Users/jb/bin/onlylatest.sh /Users/jb/Sync docs/letter.txt
|
||||||
|
|
||||||
|
The script will then move the file in question to
|
||||||
|
``~/.trashcan/docs/letter.txt``, replacing any previous version of that letter
|
||||||
|
that may already have been there.
|
||||||
|
|||||||
Reference in New Issue
Block a user