This sounds familiar, a "pocket-sync" protocol or "virus-taxi" :)
Needs a robust anti-virus for protection.

If I understood it correctly, your main criteria are:
1) One flash drive -- use of flash drive to keep all "master" project
repos on it
2) Many PCs -- work on any project at many field-PC's
3) Two-way sync -- sync project repo changes across all involved PC
without the need for network/internet
4) Extra backup -- have a backup for the project repos
5) Keep it tidy :) -- leave no project files behind on the PCs

Fossil is definitely suitable for such a "pocket" solution as it does
not need an installation and can be run directly.
Your case is a good example for DVCS use, yet lacking internet/network
the only sync option is via local file-system.

As was already mentioned, using the flash drive for both repos and
work would make this self-contained.
This way all changes are always on the flash drive, so the sync is
kinda implicit.

To enforce the central role of the flash drive, you may want to setup
some kind of a "workspace" on it, maybe have it mapped to the same
drive-letter on all of the PCs (with `subst` or `net use` command).
Also add some scripts to assist you in setup and sync.

For this to work out, you may need to have the flash drive partition
set up with Everyone:Read/Write/Delete NTFS security, so that the
potentially different user-SIDs on the PCs could write to the flash
drive. OR, well, have it formatted FAT32.

Also, you probably want to have the actual "master" repos set up on
your own "trusted" PC, instead of the flash dirve for obvious reasons
so it does not get lost-in-action :)

POSSIBLE WORKFLOW

plug to "trusted" PC:
1) setup actual "master" Fossil repos on your own "trusted" PC, add
users, serve the repos if desired, backup appropriately
2) setup the flash-drive, format, populate with needed tools, scripts etc.
3) setup the flash-bound workspace environment
4) sync workspace with the "trusted" repos

once plugged to any field-PC:
5) setup the flash-bound workspace environment
6) do work in the workspace, commit as needed (implicitly to the flash)
7) if can connect to the "trusted" PC, sync the repos

once back at "trusted" PC:
8) setup the flash-bound workspace environment
9) sync workspace and "trusted" repos

POSSIBLE WORKSPACE

\devel
  |-env
  |-fossils
  |-tools
  |-projects
  |-builds

Each project has its own repo in fossils:
  fossils\projectX.fossil

Project work-copies are fetched from resp. fossil and created as
needed (one only or per revision, PC, case etc.), commit/branch as
needed:
  projects\projectX-try-something

Preferrably do out-of-source builds, so it's easier to track source
changes, or potentially re-assign build dir to host's HDD for speed:
  builds\projectX-try-something

LOGICAL ENV

DEVENV => %DEVDRIVE%\env
DEVFOSSILS => %DEVDRIVE%\fossils
DEVPROJECTS => %DEVDRIVE%\projects
DEVBUILDS => %DEVDRIVE%\builds

Environment variables are set up from script (shortcut), which would
assign DEVDRIVE and open a CMD prompt in the workspace:
    \devel\env\setupdev.cmd

DEVDRIVE is basically a substitute for FLASHDIRVE:\devel, whatever
letter auto-assigned to the flash drive by the system.
Preferably DEVDRIVE should be set the same on all PC's, perhaps some
least used bottom letters (??W:)
This allows re-use of the project work-copies on different field-PCs,
as Fossil saves path of the opened Fossil repo.


TWO-WAY REPO SYNC

field-PC to flash-"master":
it's implicit, just commit and update as needed from within the
flash-bound workspace.

flash-"master" to "trusted"-PC:
It's bound to the way how the flash-"master" was cloned (//file, or
URL), it should be saved in the repo.
Preferably it's via URL, so you may sync even while on a field-PC (if
networked):
   fossil sync

EXAMPLE SESSION

- plug the flash into a field-PC, open CMD prompt, run setup:
  F:\devel\env\setupdev
- this assigns the DEVDRIVE, sets up environment, changes path to DEVPROJECTS:
  W:\projects
- checkout a working-copy of a project repo
  mkdir projectX-try-something
  cd projectX-try-something
  fossil open "%DEVFOSSILS%\projectX.fossil"  revision123
  fossil user default %DEVUSER% --user %DEVUSER%
- OR when exists already, sync local if needed
  fossil update
- do development, test, commit changes
  fossil commit
- done, clean up, deassign the DEVDRIVE, close prompt:
  closedev

- plug the flash into "trusted"-PC, open CMD, run setup:
  H:\devel\env\setupdev
- this assigns the DEVDRIVE, sets up environment, changes path to DEVPROJECTS:
  W:\projects
- sync all repos to "trusted", script that walks through all .fossil
files in DEVFOSSILS and does "fossil sync %TRUSTEDREPOURL%"
  syncrepos

THE END :)

That's the general idea, sorry for the long post. It's probably easier
to implement this than describe.
Hope you'd find this useful.

On Fri, Jan 20, 2017 at 3:02 AM, Martin Irvine
<martin_irv...@bigpond.com.au> wrote:
> Hi,
>
>
>
> I am new to Software Configuration Management systems, but am now interested
> in using Fossil.  I have been reviewing the documentation on-and-off for a
> few days, and have played with the program a little, but I am still unsure
> how to most appropriately use it to meet my needs, so I would appreciate any
> advice anyone would like to offer on the following use scenario.
>
>
>
> I am working exclusively in Windows environments.  I am a sole developer,
> often working on a number of relatively small projects at a time.  For the
> time being at least, I do not expect to make much use of forking and
> branching capabilities – I like to think my code development generally
> progresses fairly linearly.  But I regularly need to access and update my
> code at a number of usually standalone PCs - that is, they are never
> networked to each other and often do not even have internet access.
>
>
>
> I am hoping that Fossil will assist me in two ways, keeping track of
> milestones in my codebases including providing the ability to easily restore
> a previous version for testing purposes, and also making it as simple as
> possible for me to ensure I always have all versions of the code for every
> project accessible to me when I sit down to work at any particular PC.
>
>
>
> To achieve the second objective, I expect to make a point of always carrying
> a USB Flash Drive with me as I move from PC to PC.  I expect this Flash
> Drive should contain a number of repository files, one for each project I am
> concerned with.  I expect when I sit down at any particular PC I should be
> able to extract from the relevant repository on this Flash Drive whichever
> version of whichever project I need to access.  Similarly, when I “finish”
> working at this PC if I wish to retain any changes I have made I expect I
> should “commit” these changes back to relevant repository on the Flash Drive
> in some way.  But the most appropriate way to do all this is unclear to me.
>
>
>
> I understand Fossil is generally intended to work with a local copy of a
> project’s repository on each machine’s local hard disk, and with a master
> repository accessed remotely when required via a network or internet
> connection.  In my case, it seems to me the master repository would be the
> relevant repository file on my Flash Drive, but when my Flash Drive is
> plugged into the machine I am working on, the files on it are effectively
> local, not remote.  So, when I sit down to work at a PC, should I copy the
> repository file for the project I need to work on onto the PC’s local hard
> drive, then open the version of the code I need to access from this copy of
> the repository, or should I just open the project repository directly from
> my Flash Drive ?  Additionally, if I should copy the repository onto the
> local hard disk, should I simply copy the repository file using the
> operating system, or should I use Fossil to clone it to the local hard disk
> (I do not really understand the difference here) ?  Then, when I finish
> working at the PC, if I wish to incorporate any changes I have made back
> into the repository on my Flash Drive, should I update this directly into
> the repository on my Flash Drive, or into a copy of the repository on the
> PC’s local hard disk ?  If the later, should I then simply copy the updated
> repository file onto my Flash Drive (overwriting the previous repository
> file), or should I “pull” or “push” the changes into the repository file on
> the Flash Drive – can I even do this, when the hard disk based repository
> and the Flash Drive based repository files are effectively both local files
> on the same PC ?  I guess I'm getting a bit confused here…
>
>
>
> A possible additional complicating factor in the “right” way to do all this
> is that typically, when I finish working at a PC I often will not want to
> leave a copy of the source code or the repository on the PC (i.e., on a
> customer’s hardware).  I understand deleting the local copies of the
> repositories undermines the redundancy and backup benefits of using a
> Distributed SCM system, but I guess I will address this by leaving copies of
> the repositories on my own PCs and also ensuring I regularly make backup
> copies of the repository files on the Flash Drive.
>
>
>
> So any thoughts, experience or advice on the most appropriate way to use
> Fossil in the above scenario would be most welcome, thank you.
>
>
>
>
>
>
> _______________________________________________
> fossil-users mailing list
> fossil-users@lists.fossil-scm.org
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to