Reposerve ========= About ----- Reposerve is a way to serve code repositories, in a very simple and limited push/pull fashion, to machines on which it's not possible (or not practical) to run a full version control system. The original reason for writing this, is to serve git repos from my GNU/Linux computer, to my MS-DOS retro-pc. The advantages of using reposerve instead of something more generic, such as ftp, scp, rsync, or a distributed filesystem are: - After initial setup, it syncs with a single `repo pull`/`repo push` command. - It only transfers modified files, which is mainly useful to avoid triggering full-rebuilds on every sync, but also reduces the transfer time over slow links. - It only handles files which are explicitly put under version control on the server-side. - It automatically handles full directory trees. - It automatically handles DOS filesystem capitalization and filename restrictions. License ------- Copyright (C) 2020 John Tsiombikas This program is free software. Feel free to modify, and/or redistribute it under the terms of the GNU General Public License version 3, or at your option any later version published by the Free Software Foundation. See COPYING for details. Usage ----- On the server side, assuming you wish to serve a git repository which resides in `/tmp/foorepo`, just run `reposerve /tmp/foorepo`. Multiple instances of reposerve can run at the same time, if you wish to serve multiple repositories at once. Repositories are identified by the last part of the path, or by an arbitrary name passed with the `-id` option. On the client side, to clone a repository for the first time run: `repo clone :foorepo`. The `` part can be an IP or hostname for TCP/IP transport, or it can be a serial port (e.g. `ttyS0` or `COM1`). Files which cannot be created on the client side (due to filename restrictions for instance) will be renamed if possible, and a warning will be printed. Pushing modifications of renamed files is handled correctly, using the original name. To grab the latest changes for an existing repository, simply run `repo pull`. And to push changes back to the server, run `repo push`. Run with `-h` for a complete list of options. Build ----- ### Reposerve (server) Dependencies: - libgit2: https://libgit2.org Install the dependencies and type `make` inside the `server` directory to build. ### Repo client for DOS Dependencies: - Watt-32 TCP/IP implementation for DOS (optional): http://www.watt-32.net/ To build without TCP/IP support and avoid the dependency to Watt-32, add `-DNOTCP` to the `Makefile`. Otherwise you'll need to install Watt-32, and make sure the `watt32path` variable in the `Makefile` points to wherever you installed it (default: `C:\watt`). Make sure DJGPP is installed, and it's in the path, then simply type `make` from the `client` directory.