Fear Of Commitment

If you are having a problem using Vault, post a message here.

Moderator: SourceGear

Post Reply
taustin
Posts: 23
Joined: Fri Jan 16, 2004 12:48 pm

Fear Of Commitment

Post by taustin » Fri Apr 16, 2004 2:09 pm

Using v2.0.1

I'm commiting a large number of files (not sure how many - probably thousands) because of a stupid mistake on my part (the files really shouldn't be under source control in the first place).

The commit has been running for about 4 hours with the message "Undoing selected changes..." in the GUI client.

So my question is: should I leave it alone and let it finish? I was thinking that I might kill the Vault client process, relaunch it, and delete the files in the offending folder that is causing it to want to update these thousands of files from the repository. Would that work or is my best bet to just go home and hope it's done by Monday? :D

sterwill
Posts: 256
Joined: Thu Nov 06, 2003 10:01 am
Location: SourceGear

Post by sterwill » Fri Apr 16, 2004 2:35 pm

Killing the Vault client process should be OK. When you log back in, you'll notice that some of the files have had their checkouts undone, others will still be checked out. You can then undo the checkouts on these files and delete them from the repository.

A client optimization in Vault 2.0 tries to detect whether a "Modified" change set item is really modified by doing a CRC check. If the file is identical to the baseline version, the checkout will be undone (no new version will be created). Vault 2.0.0, 2.0.1, and 2.0.2 do this very slowly because they refresh the checkout list between each undo. Starting with 2.0.3, this will work much faster. This is what's causing your commit to take so long.

Undoing the checkouts of files that weren't really modified always occurs before the real transaction is begun. (Checkouts don't modify versioned file data, just locks, so they're not part of an atomic transaction.)

During the transaction part, after "Beginning transaction" appears in the messages pane, files are added or new versions are sent to the server. Aborting or killing the client then will cause the transaction to be aborted (no changes will happen on the server). This can be done anytime before the "Ending transaction" string appears in the messages pane, and your changes will be forgotten by the server. If "Ending transaction" appears, it's too late.

Killing the client after it has printed "Ending transaction" will not stop your changes from being committed. The server won't know the client has disappeared, since web services are "stateless" at the socket level, and will continue processing the transaction.
Shaw Terwilliger
SourceGear LLC
`echo sterwill5sourcegear6com | tr 56 @.`

taustin
Posts: 23
Joined: Fri Jan 16, 2004 12:48 pm

Post by taustin » Fri Apr 16, 2004 2:41 pm

Cool! Thanks for the quick reply.

Post Reply