> It really belongs, if anywhere, in the main method of rebase.py to be called once per operation 

The idea was that updating the whole snapshot folder is a long operation (because there maybe too many files). And in the most cases I run `gitcc rebase` quite often. And in the most cases there are no multiple changes most of them event no chanes at all. Especially new files. So long updating on every `gitcc rebase` is a waste of time.
So I've decided that it should do an update only for new files.

> and ideally the call is actually "abstracted" (I use that very loosely) in clearcase.py

I don't know what `clearcase.py` is. I don't use `core.type = UCM` in my `gitcc` file so UCM class will not work for me. I don't know what will be if I set `core.type = UCM`. I don't know where to put this "update" logic: to Clearcase class or UCM class. And what logic should contain other class.
So I didn't touch this file at all.
Besides `cc_exec update` has been already used before in this form e.g. checkin.py:31.

> I'm curious about this though, my understanding/recollection is you should be able to able to perform all the Clearcase operations below without having to update, which is purely about the files in the snapshot view? Please let me know if I'm mistaken.

This is incorrect because your `if not exists(cc_added)` checks if this file exists in the view. Otherwise it skips this and doesn't add to a commit.
This `if` was added in da9a4ca09b00b1a417fa1094b93067c0d0115069. So maybe you know better what this `if` is for.