MySync would be a super-simple command line tool that could be used to synchronize directories in a way that works superficially like git. The logic of the code was a former commercial product that I wrote in C#, but will rewrite in Pascal.
The idea is that, since just about anything can be mounted as a drive these days, I can meet the needs of 90% with this functionality....
> MySync clone <origin directory>
This clones the origin into the current directory, and also creates a .mysync directory (similar to how git creates a .git directory) to hold details about the sync process.
then... when you want to sync changes, you just run:
> MySync Sync
In the default scenario (no flags), conflicts are mentioned, but ignored. They will reappear again each time you perform a sync, until you resolve them, either manually, or by using the interactive (-i) flag
MySync Sync -i
Options for a conflict are push to
- rigin, pull to local [r]epository, or gnore.
Overwritten files from a conflict are stored off inside the .mysync directory, so that they can be later restored if need-be.
Like Git, there is a .mysyncignore file, which works like a .gitignore
Unlike Git, there is also a .mysyncretain, which works like a .mysyncignore, but instead of ignoring the file, it retains a version of the file (inside the .mysync directory) every time the file is replaced as part of the sync process. In this way it mimics some of the functionality of a journaling filesystem.
I know there are other sync utilities out there, but I think the logic of mine is unique... Please correct me if I'm wrong.
I attached a pdf file to give a bit more details about the process itself, and how it figures out what to sync. I've been using the logic for almost a decade now and its always worked flawlessly.