Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

clearcase -- difference between update and rebase

I have recently been thrown into learning ClearCase (I come from a background with git and svn -- I desperately miss them both :) ) and have been chewing on this one for a while: in a snapshot view, what is the difference between an update and a rebase?

I know there are differences (and honestly I have started ignoring "update" altogether, because it never seems to do what I want (which is to pull down changes that other devs have recently delivered (git pull, svn update))), I just do not see what the difference is (and the cc docs are less than helpful on the matter (for bonus points: any pointers to good cc resources (something akin to svn-book or the git man pages, for example))). Yes, that was one sentence, and half-dozen parentheticals.

like image 699
mgalgs Avatar asked Mar 18 '11 22:03

mgalgs


2 Answers

Update is strictly for snapshot view: see the difference between snapshot and dynamic view.

When you do a rebase, using a snapshot view, that operation (which changes the foundation baselines of the Stream associated with the view) will be completed by an update of said snapshot view.

If you want to get the development of other developers, you can do it with an update only of said developers have been checking their code in on the same branch than the one you are monitoring with your snapshot view.
If you are using UCM, those developers must have their view associated with the same Stream than the one used by your snapshot view.

Then, an update will allow you to get back (and merge if necessary) all the modifications done by your colleagues.
But that is assuming you don't use the "one Stream per developer model" (which I don't find very useful)

For a good first read:

  • What are the basic clearcase concepts every developer should know?
  • ClearCase advantages/disavantages
like image 89
VonC Avatar answered Sep 22 '22 23:09

VonC


In case we are not clear, a stream = a branch in common term.

For UCM, an update is typically only useful when working on a shared-stream, such that another developer could be checking in files on that stream that you are working on. In this scenario, you use "update" to pull the changes made by that developer on that same stream.

A rebase pulls changes made on the central integration stream that has been committed by different developers across your company from their respective streams. A commit from substream to integration stream is called a "deliver" which is the opposite of rebase.

like image 26
kolslorr Avatar answered Sep 23 '22 23:09

kolslorr