Hi again,
A number of people have replied to my questions about using Fossil SCM with Master Repositories held on a Flash Drive. Thank you all for your input. I have been experimenting further with Fossil, and have decided on a plan that I think should work, but I am still am bit confused about whether or not I should use any Master Repositories, so I would appreciate any further advice anyone might like to offer on the following plan. But before describing my plan, I would like to clarify a few points to hopefully avoid any unnecessary discussion about these details: I understand the long term reliability of Flash Drives is suspect, and thus it will be important to back-up the files on the Flash Drive regularly and probably to replace it from time to time. I also understand moving a Flash Drive from PC to PC raises various virus related concerns, but I believe I am experienced in managing this. To implement my plan below, I will of-course keep a copy of Fossil.exe on the flash drive so it is available at any PC. For the purposes of this discussion I am a sole developer working only with Windows 7 or later based PCs. My Requirement I wish to "carry a number of projects around with me" and be able to temporarily access one or more of these projects at a time on standalone client-owned PCs. "Temporarily" means I will usually not want to leave a copy of the source code or the repository on the PC when I am finished though I may want to take a copy of any changes I have made to the project with me. "Standalone" means these PCs usually are not networked to any other PCs and usually do not have any internet access. My Plan So, my plan is to keep a number of Fossil repository files on a USB Flash Drive, plug this into the client's PC and "open" the required project(s) as needed while I am working at the PC, then optionally commit any changes back to the repository(s) on the Flash Drive if I wish to keep them, with appropriate version tracking and comment recording. I am now pretty sure this is all readily do-able using Fossil. But for my requirements, I am still a bit confused about the pros and cons of cloning and syncing Fossil repositories vs simply copying the repository files on and off of the Flash Drive. Given that I am a single developer and assuming that any work on any project that is to be retained will only be undertaken by me on one PC at a time, it seems to me I do not need any Master Repositories (in the sense that Master Repositories are used to pull, push or sync changes between independent sources ?) and that I will not need to push, pull or sync changes anywhere ? Because of this, it seems to me I need only "ordinary" repositories on the flash drive, which I can open and commit to "directly". However, as much as possible, I believe in only copying files on-to and off-of Flash Drives and not using them as "live" media with random reads, writes and appends occurring to the files they hold. So, in my intended use of Fossil, when I need to access a project at a client's PC I would expect to copy the relevant repository file from my Flash Drive to the PC's local hard disk, then open that copy of the repository onto the local hard disk and work with the source files. When finished, if I wish to retain any changes I would expect to commit the changes to the copy of the repository file on the local hard disk, then copy this updated repository file back onto my Flash Drive (overwriting the previous version of the repository file) before deleting the repository and the working files on the local hard disk. For backup purposes, I would copy the repositories from the Flash Drive onto my "at home PC" frequently, and from here these copies would then get included in my home PC backup procedure. When I work on a project at home I would treat my home PC similarly to a client's PC, in that I would open a copy of the project's repository on my local hard disk, commit changes into this, then copy that repository file onto the Flash Drive. So, if everything goes according to plan, I think I could do this indefinitely without ever needing to push, pull or sync to a Master Repository ? Is this valid and reasonable, or am I missing something important here ? Artur Shepilko suggested having Master Repositories on my Home PC and syncing the repositories on the Flash Drive into these, but (in a single developer non-networked environment) I do not understand if this offers any benefit over simply copying the repository files from the Flash Drive to my Home PC, and knowing that the "backup copies" of my repository files at home should always be "byte-for-byte identical" to the "live" versions on my Flash Drive ? I would appreciate any thoughts, clarification or guidance on this. Thanking you for your assistance, Martin Irvine. ----- Original Message ----- From: Martin Irvine To: fossil-users@lists.fossil-scm.org Sent: Friday, January 20, 2017 7:32 PM Subject: [fossil-users] Using Fossil SCM with Master Repositories held on aFlash Drive ? 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