NAME

updater - a command-line tool to mass-update multiple version-controlled projects

SYNOPSIS

updater [-ds] init [DIR]
updater [-ds] [-D DIR]
updater [-ds] list [-Y my.yaml] [DIR]
updater [-ds] update [-Y my.yaml] [DIR]
updater [-ds] backup [-Y my.yaml] [DIR]
updater [-ds] restore [-Y my.yaml] [DIR]

OPTIONS

-d, --debug

Print debug information on STDOUT

-D /path/to/root/dir, --dir=/path/to/root/dir

Sets working data directory

Default: current directory (.)

-h, --help

Show short help information and quit

-H, --longhelp

Show long help information and quit

-l, --ls, --list

Turns off update performing and show list of found folders

-s, --silent

Turns on the silent mode

-V, --version

Print the version number of the program and quit

-Y YAML_FILE, --yaml=YAML_FILE

Specifies yaml file to manually migration directory structure

Default: .updater.yml

COMMANDS

init, initialize, ini
updater init

Forced init the work makefile

restore, re
updater restore

Restore file struct by YAML file

status, info, st
updater status

Show status information

update, up
updater update

Performs update found folders

DESCRIPTION

The updater tool provides a unified way to update directory structures containing multiple version-controlled projects (e.g., Git, SVN, etc.). With a single command, users can synchronize all subdirectories to their latest state by automatically executing update commands such as git pull or svn up in each repository. This simplifies and automates the process of keeping multiple projects up to date.

CUSTOM UPDATING

If any subdirectory contains a file named .updater with a list of commands to execute, that directory will take priority during processing, even if it contains system subdirectories such as .svn, .git, or others.

All commands listed in the .updater file must be executed strictly in the specified order.

If the .updater file is empty or contains no commands, the directory will be skipped. This allows you to explicitly disable processing of certain directories, even if they contain system subdirectories such as .git, .svn, or others.

CLONING WORKING STRUCTURE

If you have a new workstation (desktop, laptop, etc.), you can clone your working environment by performing the following steps:

1. In the source directory, run:

make clean
updater -l

2. Copy the generated .updater.yml file from the source directory - the one you intend to clone from - to the target directory on the new workstation. The project structure will be restored from the repositories specified in .updater.yml.

3. Switch to the target directory on the new workstation and run:

updater restore

After completing these steps, the entire project structure identical to the original will be recreated. This significantly reduces the time required to clone all your projects onto a new workstation.

Note that if any project contains a custom "updater" (a .updater file), that directory will not be cloned automatically and must be cloned manually.

AUTHOR

Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2025 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses/