Disclaimer

The content of this blog is my personal opinion only. Although I am an employee - currently of Nvidia, in the past of other companies such as Iagination Technologies, MIPS, Intellectual Ventures, Intel, AMD, Motorola, and Gould - I reveal this only so that the reader may account for any possible bias I may have towards my employer's products. The statements I make here in no way represent my employer's position, nor am I authorized to speak on behalf of my employer. In fact, this posting may not even represent my personal opinion, since occasionally I play devil's advocate.

See http://docs.google.com/View?id=dcxddbtr_23cg5thdfj for photo credits.

Thursday, August 02, 2012

Jamie Wong's An Argument for Mutable Local History

http://jamie-wong.com/2012/05/25/an-argument-for-mutable-local-history/

Argues for mutable local history, and hence rebase.

I think all of these arguments apply also to global history, at whatever level.

But I want immutability as much as possible.

Again, I conclude that it is not the absolute history we what to mutate. It is our VIEW of the history.

(Although there are valid reasons to really want to edit history, e.. to drop stuff that you are not legally allowed to use.)

2 comments:

Andy "Krazy" Glew said...

JW says things like "If enough commits just came down, your feature branches won’t even show up on the same screen as master any more".

Basically complaining about the PRESENTATION of the history.

IMHO that's a reason to fix glog, not to mutate the history. It is a reason to amend the presentation of the history, but not the raw history.

I'd prefer a rebase that left the pre-rebased branch around at its original location. Perhaps hidden.

Andy "Krazy" Glew said...

http://www.phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html#one-idea-is-one-commit

I'm okay on "Choose a strategy where one idea is one commit in the authoritative master/remote version of the repository."

In particular "having a strict policy where your master/trunk contains only merge commits and each is a merge between the old master and a branch which represents a single idea. Although this preserves the checkpoint commits along the branches, you can view master alone as a series of single-idea commits."

But I emphasize that even if you follow this diligently, you will probably encounter violations that require history editing on the trunk.