Arcv

Arcv

License agreement

arcv can be used free of charge, but it is not a free software under permissive license. All rights reserved according the terms of the License terms below.

By downloading and using the arcv software, you agree with the terms of the License terms as described below.

Release history

More details can be checked below in the Change log section.

Release tag Revision Log

R2.0.0

397

Backup-oriented options, URI-based fetching and pushing, check-in into different source in repo, further extensions and fixes

R1.2.2

336

Hotfixes, new command "changelog", auto git tag at export

R1.2.1

317

Significant check-in fixes (undetected permission-only changes for folders - not checked-in), changed binary files not reported at check-in - not displayed). Release hooks feature

R1.2.0

299

Critical fixes (SHA computing, permission-only changes), numerous new options/features, improved diffs handlings

R1.1.0

232

3rd release supplying 'rel', 'repo' and '-X' commands

R1.0.1

207

2nd release for hotfix

R1.0.0

187

First release

Download

The following table lists all the downloadable versions from lastest to oldest:

Debian Package Zip Creation time

arcv_2.0-0_amd64.deb

arcv_2.0-0.zip

2026-10-25 20:12:05 +01 CET

arcv_1.2-2_amd64.deb

arcv_1.2-2.zip

2026-10-02 04:39:02 +02 CEST

arcv_1.2-1_amd64.deb

arcv_1.2-1.zip

2026-09-06 23:55:09 +02 CEST

arcv_1.2-0_amd64.deb

arcv_1.2-0.zip

2026-08-28 12:12:21 +02 CEST

arcv_1.1-0_amd64.deb

arcv_1.1-0.zip

2026-08-13 12:42:05 +02 CEST

arcv_1.0-1_amd64.deb

arcv_1.0-1.zip

2026-07-26 13:11:25 +02 CEST

arcv_1.0-0_amd64.deb

arcv_1.0-0.zip

2026-07-23 13:39:51 +02 CEST

Download via script

The Debian packages can also be downloaded by script as follows (here for latest):

The latest zip packages can be downloaded by script as follows:

Auto-install of latest by script

For convenience, the script install_arcv.sh is supplied for an instant installation. This will install 2 debian packages arcv and shell-api.

Click to download and then run it:

sudo install_arcv.sh

If you prefer or if necessary in case of problem, you can go through the installation steps described below.

Installation by command line

A arcv Debian package can be installed by any user as follows, provided that user can run sudo.

Example for latest:

# shell-api must be installed beforehand
sudo dpkg -i shell-api_1.2-0_amd64.deb
sudo dpkg -i arcv_2.0-0_amd64.deb

Alternatively, a free installation inside a preselected folder can be carried out from the zip as follows:

unzip shell-api_1.2-0.zip
unzip arcv_2.0-0.zip

License terms

"arcv" SOFTWARE LICENSE

Copyright (c) 2024-2026 Michel Mehl.
All rights reserved - Tous droits réservés.

The arcv revision control tool, herein referred to as the 'Software', inclusive all executables,
configuration files, documentation, and related supplied tools, can be used free of charge
under the terms of this License and the provisions described therein.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Whilst the Software can be used free of charge, it remains the full ownership of the copyright holder (the Author).
No commercial distribution, no reselling, no sublicensing, no derived commercial work are allowed
to be made of the Software by the Licensee without an express written agreement with the copyright holder,
whatsoever it regards the Software itself or any source code, documentation, tools part of it.
The Software is allowed to be integrated into an automated process, provided :
a) a prior notification and description of the use case is sent by the requesting company or institution
 (the Requester) to the Author,
b) an express agreement is sent to the Requester by the Author.
Upon agreement, the Requester grants the Author to use its legal name along with the use made of the Software
for its promotion.

The Licensee may adapt the Software for its own personal or corporate use only, but it is not allowed to
make a new public release of the Software. All aforementioned restrictions remain applicable
in this case too.

This agreement is made and shall be construed in accordance with the laws of France.

Appendix

Change log

2.0.0

  • New features

    • Circular backups : the --cycle option to define the number of revisions after which the revision number shall wrap around to restart from 0. Each circular revision contains all data not only the differences compared with previous version

    • Circular backups with additional backup of last cycle revision: additionally to regular circular backups, makes copies of the last cycle revisions (before wrap around) in a separate directory in the repository, which name is the name of the source prefixed with "-cycles". The "-cycles" can be checked out like any other source to retrieve the successive backup revisions.

    • --force :Force creation of a new, empty revision even when there is no change. Most like useful for timeline-based backup

    • --interval: Allow a new revision only if the given time interval since last revision was respected for timeline-based backup

    • Automatic fetching from URI: fetch data from an URI before initiating check-in. At the moment MongoDB URI are supported only (mongo dump archive).

    • Pushing of data to an URI: pushd back previously fetch data to an URI, typically for the sake of restoring a backup. MongoDB URI only.

    • --rm : enables to check in new fetched data without leaving a local image behind

    • Enabling the commit into an external existing or new source in the repository using --source

    • Revision log edition function in interactive revision history menu, activable by defining 'editor' parameter in config

    • New repo infos 'ishead', 'head-rev', 'fetch-url',

    • Output of 'list' includes now the size occupation of source folders: size value + proportion bar compared with other sources

    • Title of source list now displays hostname, LAN IP and public IP

    • Added standard options of genapp (--log, --files etc),

    • Support of --cm-cfg option to update the source config in repo (.yml). Only used internally at the moment.

    • Allowing destroy to run auto when passing -yy

  • Fixes

    • When a file of the same name was appearing twice at 2 different locations in the file tree, both could get removed when removing either one. This is in relation with a better internal use of exclusions with rsync regarding unchanged files

    • bug fix of changelog when some commits were done but not release tag yet;

    • fixed functions defined for retrieving release related info when no release tag was created yet (returned 0 with "" info instead of 1)

  • Improvs/extensions

    • Improved the way files are checked in with rsync, whereby only paths relative to the source folder name (and not including its name itself) are internallty used. Consequently, files listed in DROPPED file starts with '/' followed by the relative path. Retro-compatibility is handled.

    • Changed date format in "list" command to be more friendly

    • Code improvs/refactoring, higher modularity

    • Better display info for explicit rev or tag

    • Handling error case when output folder specified for check-in

    • Updated commands/options doc

    • Worked out CHANGELOG to adoc format to make it usable in online documentation

1.2.2

  • New features

    • new "changelog" command to display log till the last release; fixed doc of --fmt option

    • extended 'export' command with the auto-creation of git tag based on arcv’s last release tag and tag log on user request Otherwise, the log of the last revision is proposed by default

  • Fixes

    • fixed empty dirs not pruned in newly created revision archive folder, in complex file trees this could lead to unnecessary filesystem entries creation

    • fixed use of base32 when building autopath for repository mount, since base32’s output wraps with newlines after 76 chars

    • at check-in, the source directory in repository was resolved only on a basis of a matching hostname/MAC entry in the ROOT file. Now the complete original source path on the hostname is also considered. This solves the issue of launching arcv in a subdir of a source, which also matches another source directory existing in the repository.

1.2.1

  • New features

    • implemented the 'hook' command to list or define a release hook, a program to run when creating new release tags

    • added repo info release-dir and release-hooks

  • Fixes

    • No change was detected (no check-in possible) when only the permissions of folder(s) changed, now all perm changes are also checked right after the SHA256 computing (covering only files)

    • Permission-only check is also now more reliable when multiple changes are implied.

    • Changed binary files not reported at check-in (display-only issue)

    • Some invalid/undefined variable names were used

    • 'av check' did not detect and handle permission-only changes

    • Change man section from 8 to 1

  • Improvs

    • Faster check-in process

1.2.0

  • New features

    • Random revision tagging: added command 'av pub TAG:REVISION' to create tags on a random revision

    • --from and --to options to select only a range of revision for the 'av log' command (history and files)

    • '-l' option for carrying out a dry check-in listing only updated files (like a git status)

    • Addons in changed file menu at check-in:

      • 'diff' checking now also available on <ENTER> via menu at check-in when meld is not available. a terminal window is popping up showing the differences with git or diff. The popup is auto closed when then exiting menu. Smart diff with context and colors

      • 'diff' can also always be chosen explicitly instead of meld using 'd' key in menu (line-by-line diff)

      • '<r>estore' menu option, to checkout and restore a changed file

      • '<R>eset' menu option to reset current image to the head (like a git reset --hard)

    • In release list menu, added menu action 'w' to view matching log messages

    • --fmt=plain option for log and diff:

      • Enables to display history without text formatting

      • When diffing with the 'diff' tool, the configuration param 'plain-diff-args' is used instead of the 'diff-diff-args' to enable initial diff behavior in arcv (without popup , nor context and colors)

    • Via configuration:

      • ignore-special-perm-bits: enables to ignore specific permission flag like ACL for permission-only changes

    • Extended the list of information can be displayed with 'av repo':

      • releases : list of releases

      • latest-release-tag: latest release tag

      • latest-release-rev : revision number of latest release

      • exclude-file: exclusion file path in the repository

      • exclusions: list of patterns of excluded files

      • src-dir: root directory path for the source in the repository

      • rev-dir: directory path of current revision in the repository

      • rev-hashfilepath: : directory path of the hash file of the current revision in the repository

      • rev-hashfilename: hash file basename

      • head-dir: head directory path in the repository, which contains all information about the head

      • head-image-dir: directory path of the full head image

      • git-repo: directory path of the git repo in the repository, used to export source images

      • size: total size of the data occupied for the source in the repository

    • --fix to recompute hash for current image

  • Improvs

    • Improved diff experience when using diff:

      • more git alike, using colors and context lines

      • configurable diff parameters: diff-diff-args diff-popup-xterm-args

    • Ergonomics of changed filed menu for multipages (scrollbar mime, page/total)

    • At check-in and if there are changes, the screen is cleared prior to showing the menu

    • Explicit handling of any removed file which is a symlink

    • Enhanced SHA256 computing for a random folder by regarding applicable exclusions by detecting whether the folder relates to a known source in the repository basing on the following parameters in order of priority: explicit source specified, revision or release tag checkout detected from name (folder basename is <source>-<something> and 'source' is known), raw input folder basename.

    • Improved code modularity

    • Consistent implementations of 'log' command for file history and source history: with -y, shows a menu where diffs can be triggered. Without -y the full history is progressively displayed.

  • Fixes

    • Permission-only changes are now properly handled by the revision control system. Permission changes are now subject to a specific handling which enables to revision any file or dir which only permissions changed (and not its content)

    • change diff arguments order when checking current source with anything else so that addons appears as '+' and deletion as '-' with diff tool

    • Log commands can now be applied to a file by specifying its name in the current dir anywhere in the file tree without having to specify the relative path to the root source folder

    • Diffs launched in backgound from the changed file menu at check-in are not blocking the menu anymore. Diff processes are auto-terminated at arcv exit (except meld)

    • Several flaws in SHA256 computing algorithm:

      • The hash computation algorithm is now much more reliable across different systems, in particular it does not not rely anymore on any output order or sorting of ls

      • as legacy the function forces US/Pacific timezone for the internal 'ls' , but initial timezone was not restored properly. Even it does not affect the fingerprint itself, it affected the calling app

    • Now properly handling display of multi-page change menu at check-in

    • Changed files can now be diffed through the menu at check-in when there are more than 255 files

1.1.0

  • New features

    • 'av rel' command: to check release history, including interactive menu to diff with head or previous release

    • 'av destroy' command: Take folder out of revision control and delete all related file from repositiory

    • 'av repo [infoname]', provides the following information, resp for 'infoname':

      • releases : show the release history message log. Same as 'av rel', except there’s no interactive menu

      • exclude-file: file path where are stored the exclusion file patterns in the repositiory

      • exclusions : list of exclusion file patterns for the source folder as stored in the repository

      • src-dir : root directory of the source inside the repositoryq

      • rev-dir : head revision directory of the source inside the repository

      • head-dir : full head file tree inside the repository

      • git-repo size: Size occupied by the source folder inside the repository

      • Special values:

    • (none): show all information listed below

    • (any string not maching the above ones) : seeks a matching substring in the above info name and shows it when so. E.g. 'av excl' will show info for 'exclude-file' and 'exclusions' E.g. 'av dir' will show all info which name contains 'dir': src-dir, rev-dir etc.

    • 'av -X' : exclusion file patterns specified with '-W' can now be defined not only at repository creation

  • Improvs

    • revision history log now restricted in width with alternate colors for each entry

    • enabling using different versions of shell-api for other tools (like sumo): changed dependency handling of shell-api for arcv install: now arcv looks for a local shell-api dir which is a symbolic to a folder thereof whose name must hold the exact expected version

  • Bug fixes

    • fixed 'av repo' in non-revisioned folder asking to check in new folder

    • display error: depending on diff tool version, modified files could not be listed at all at check-in

1.0.1

  • Hot fix release

    • New features: added "repo" command to get information on repository. Currently, only "av repo git-repo" is available

    • Improvs: exclusion filters for temp nfs and swap files

    • Fixes:

      • HOT: removed folders were checked out (critical)

      • Makefile 'export target

      • There could be words in local language appearing in the generated man page (month at end of page)

1.0.0

  • First official, public release