Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between a reserved checkout and an unreserved checkout?

Tags:

clearcase

When I check out a file in ClearCase it asks me if I want to check out the file "Reserved" or "Unreserved". What are the differences between these types of checkouts and when are the appropriate times to use them?

like image 608
brainimus Avatar asked Jun 01 '10 13:06

brainimus


1 Answers

As mentioned in "What are the basic clearcase concepts every developer should know?", ClearCase support a locking mechanism which is both:

  • "pessimistic": reserved checkout doesn't actually prevent other people to do their own checkout, but they will have to wait for the person who has the file checked out as "reserved" to do the check in: nobody can check-in until that person does the first check-in (then each other user will have to merge his/her version with the latest checked-in file)
    Note: a "reserved" checkout can release its lock and be made unreserved, either by the owner or the administrator;

  • "optimistic": unreserved checkout which means (if nobody use a reserved checkout on the same file): the first one to check-in can do it without any other operation, the other ones will have to merge their work with the latest checked-in file.

In term if usage policy:

  • Usually, reserved checkout is fine since it allows you to make your changes with a "high prioritization": they have to be taken into account first.
  • For local modifications which don't have to be checked-in right away, an unreserved checkout is enough.
  • For local modification which don't have to be checked-in at all, hijacked file or eclipsed files are enough (so, no checkout at all)

Notes:

A cleartool checkout/checkin is not the same as:

  • svn checkout/git checkout, which are updating a working repository with the content of a revision/commit, as opposed to checkout a version of a file: set of files vs. one file.
  • "checkin": svn commit/git commit which registered changes of possibly multiple files to the repo (remote for SVN, local for Git), as opposed to creating a new version for one file.

Git itself would not have "file locking" (reserved checkout). Only system using Git might offer that feature, like Git LFS.

like image 156
VonC Avatar answered Nov 04 '22 15:11

VonC