Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ltratt/rsync_cmd
rsync_cmd: edit locally, build remotely
https://github.com/ltratt/rsync_cmd
rsync
Last synced: about 2 months ago
JSON representation
rsync_cmd: edit locally, build remotely
- Host: GitHub
- URL: https://github.com/ltratt/rsync_cmd
- Owner: ltratt
- License: other
- Created: 2023-07-03T13:28:52.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-03-03T08:46:44.000Z (10 months ago)
- Last Synced: 2024-10-11T02:47:49.407Z (3 months ago)
- Topics: rsync
- Language: Python
- Homepage:
- Size: 11.7 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# rsync_cmd: edit locally, build remotely
`rsync_cmd` is designed to make it easy to develop a project locally, but build
and run it remotely. It uses [rsync](https://rsync.samba.org/) to *mirror*
(i.e. alter the remote copy to be identical to the local copy, removing any
remote changes) the current working directory to a remote and `ssh` to run a
command remotely in that directory.Its usage is as follows:
```
rsync_cmd [-d|--dry-run] [--ignore-conf-file] [-v] \
[-- .. --] \
[ ... ]
```For example:
```
$ cd ~/src/yk/
$ rsync_cmd ssh.example.com cargo test
```This will take the contents of the current working directory -- `~/src/yk/` --
and replicate them to the directory `~/yk` on the host `ssh.example.com` using
`rsync -az --delete-during`. If/when synchronisation completes successfully,
`rsync_cmd` will then run `ssh ssh.example.com "cd yk && cargo test"`. Note
that by default `rsync_cmd` will only synchronise directories that have a
(possibly blank) `.rsync_cmd` file in, to help you avoid accidentally
synchronising unintended directories.To see which commands are executed, specify `-v`. For a dry-run that doesn't
run `rsync` or `ssh`, specify `-d`.To pass additional arguments to `rsync`, put them between a pair of `--`
arguments.`rsync_cmd` adds `dir-merge,-n /.gitignore` to the `rsync` command which does
require trusting the sender, though in `rsync_cmd`'s mirroring mode, it is
unclear whether one does need to trust the sender. `rsync_cmd` also adds
`--exclude-from=$HOME/.config/git/gitignore_global` to the `rsync` command if a
file exists at that path.## `.rsync_cmd` configuration file
The `.rsync_cmd` file by default denotes directories which `rsync_cmd` is allow
to synchronise. It can also contain normal `rsync_cmd` command-line options
that are prepended to the user's actual command-line arguments. Each
command-line argument in `.rsync_cmd` must be on a single line. For example:```
$ cat .rsync_cmd
cat: .rsync_cmd: No such file or directory
$ rsync -v ssh.example.com cargo test
rsync -az --partial --info progress2 --delete-during --filter ":- .gitignore" --exclude-from /home/ltratt/.config/git/gitignore_global . ssh.example.com:yk
ssh -t ssh.example.com cd yk && cargo test
$ echo --\n--exclude=.git\n-- > .rsync_cmd
$ cat .rsync_cmd
--
--exclude=".git"
--
$ rsync -v ssh.example.com cargo test
rsync -az --partial --info progress2 --delete-during --filter ":- .gitignore" --exclude-from /home/ltratt/.config/git/gitignore_global --exclude=.git . ssh.example.com:yk
ssh -t ssh.example.com cd yk && cargo test
```If you wish to temporarily stop the contents of `.rsync_cmd` being prepended to
the `rsync` command, specify `--ignore-conf-file` or `-i` to `rsync_cmd`. To
stop `rsync_cmd` checking for the presence of `.rsync_cmd`, specify
`--ignore-conf-file` or `-i` twice.