Quote:
It is more like an auditing system - if you "restore" an old version, it actually modifies the current version to look like the old version - and you can quickly end up with lots and lots of versions if you say try to restart an exercise from scratch four or five times. And more confusion too.
I don't know about Mercurial and other "changeset" systems, but "snapshot" systems like Git, AFAIK, don't do that. They store entire files upon commit, so when you restore a version from an uncommitted one, they remove the uncommitted files, and copy the repository files into the tree, thus preserving not just the original file, but also its meta data (if that's what you're worried about when you say "modifies the current version to look like the old version").
However, IF there are any commits between the current version and the one you're restoring to, then you're right - the revisions between the restored one and the current one will be kept, and a separate commit will be added on top. The files are still the same (not saved a second time), but the revision logs show them having appeared once more.
But that last characteristic is precisely the solution to what I perceive as a "problem" of the snapshot system in 0.8.7. Then again...
Quote:
So for a developer trying to work out a complex set of configurations for a particular topology, a version control system may be useful. And if it were to be truly mimic your real-world install, then it could also be useful there.
But I don't believe the vast majority of GNS3 users need or want that.
... I'm mostly in the minority of GNS3 users there. I mean, I have recently used GNS3 for training, but as a teacher, not as a student. On most days, I'm trying to mimic real world topologies and try out new approaches instead of risking my real world network.
I hear you though... And Git has a solution for that too, although I'll admit it may seem to make things "harder", since it will require a little additional GUI from GNS3. It's called "branches". A Git repository can have multiple branches, and revision logs show only the history of the current branch, so...
Once you reach a certain point that you know you'll be restoring to multiple times (e.g. the start of an exercise), you can create a new branch out of that commit, and switch to it. Further commits will be saved on that new branch. When you want to restart the exercise, you can just create a new branch out of the ORIGINAL branch again. Branches can be deleted, so if you want to remove traces of your past attempts/variations, you just remove the branch, leaving just the original one.
You could theoretically even create branches that are not based on any particular commit, and copy files from another revision into them, thus removing the entire history up to this point. I say "theoretically", because doing
that is a little more complicated than a simple Git command (you first copy the files outside of the repository, create the empty branch, move them back into the new branch, commit), but it's doable non the less.