A multi-way file synchronizer using git as transport
Copyright (C) 2011,2013 Hyeontaek Lim
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
$ git clone git@github.com:hyeontaek/kaleido.git
- (Add the kaleido directory to PATH)
- Requires: Python (3.3 or later)
- Requires: git (1.7.0 or later)
- Requires: inotify-tools (for Linux; 3.13 or later), pywin32 (for Windows; build 218 or later)
- Lower versions may also work
- MacOS X and other platforms are not tested; the local file change monitor will not work (not implemented)
- On Machine A,
$ mkdir ~/sync
$ cd ~/sync
$ kaleido init
- On Machine B, C, ... (new machines can be added later),
$ mkdir ~/sync
$ cd/sync/sync
$ kaleido clone USER@MachineA:
-
Changes on any machine will be propagated to other machines
-
Conflicts are resolved silently; manually fix them by editing the files or checking out one version (see executing any custom git command)
-
On Machine A,
$ kaleido -B -b 0.0.0.0:50000 sync-forever &
- On other machines,
$ kaleido -b MachineA:50000 sync-forever &
-
To exclude some files,
- Use .gitignore; or
- List them in .kaleido-ignore at the root of the sync
-
To include git repositories for synchronization,
$ kaleido track-git PATH
- To exclude git repositories from synchronization,
$ kaleido untrack-git PATH
- If .kaleido directory becomes too big, on Machine A,
$ kaleido -b 127.0.0.1:50000 -D squash
-
All other machines synchronized with Machine A will compact their own .kaleido directory if they are also using -D option
-
To execute any custom git command (e.g., to checkout old files),
$ kaleido GIT-COMMAND ARGUMENTS ...