last weekend I thought about correctly handling renames in the case of pinned shares. VSS performs renames on every share of the item, regardless whether it is pinned or not. We used the share+pin method to generate our release maintenance folders and labeled the releases. So if a rename is done on the original tip project, the release projects are broken, since the pinned shares are renamed also. My understanding of a pin is, that it pins the file into the state that it had while it was pinned. This includes the name and not only the content. For the conversion it wouldn't be any problem to omit renames on pinned shares. But this will brake the comparability of the subversion archive and the last version in VSS after the conversion. So I'm thinking of a flag to tell vss2svn to do it the correct way. Any ideas on this?

I was following up until you say it would break compatibility of the subversion archive and VSS after the conversion. It sounds like the functionality you describe is the "correct" way (meaning the way VSS does it) so how would this break compatibility?

I meant, if we do it the VSS way you can compare the archives later, in order to determine, whether the conversion was successful. Also, at one day, when someone is writing an incremental version of the converter, that mirrors a nightly version of a VSS archive into a subversion archive, the two archives are identical in the way, that if you search for a file, the file is really there.

Doing it the VSS way will simply give you an subversion project structure that is identical to the one in VSS.

In this special case I consider this renaming of pinned shares to be the wrong action, regarding in terms what the user wanted to achieve with the pinning. Therefore I'm thinking about adding more intelligence into the converter to fix something, what I consider a bug in VSS. Actually it is vice versa: I have to put work into the converter to do it the VSS way.

I think one general switch indicating whether or not pins should be honored would be correct. If pins aren't honored then commits are always done to all items, but otherwise those commits are suppressed, right? The big problem is that a pin in VSS doesn't really mean anything until you check *out* an item. So if we honor pins in the converter, then the user must know that their converted repo will not be in the sort of state where those pinned items can actually be used for anything besides checkout.

Hmmm. Naturally pinning is a little problematic concept in a version control system. But it does not only affect the checkout procedure. You also can't modify pinned files directly. You need to do it via a non pinned share. And yes you will see the checkin in the hostory of the pinned share, but you can't do anything with this new version. It will not affect you in any way (except renaming ;-) )

Pins are primarily used when creating maintenance branches since they are "cheap" in the creation of the branch. Seldom I have used pins to temporarily undo a change from a developer that broke compilation for others. So a pin in my understanding is: "revert the state of the item to version X". The way VSS works, there is no way to undo the revert since reverting (or better Rollback) is an irreversible process.

So I think, there is no need to have a switch to honor pins are not. They must be honored. The question is wether we allow any modifications on pinned items (esp. renames) since these actions will modify the pinned state.


Dirk

_______________________________________________
vss2svn-users mailing list
Project homepage:
http://www.pumacode.org/projects/vss2svn/
Subscribe/Unsubscribe/Admin:
http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists.pumacode.org

Reply via email to