4 ms·
CL? Is that perforce? Hopefully it works better than the real perforce. A really tough and confusing versioning tool.
by jorblumesea 7y ago
CL? Is that perforce? Hopefully it works better than the real perforce. A really tough and confusing versioning tool.
- krasin 7y agoGoogle uses Piper, that is vaguely inspired by Perforce workflow, but significantly less confusing. Source: https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext https://cacm.acm.org/magazines/2016/7/204032-why-google-stor...
- nkskalyan 7y agoIt is an internally built versioning tool with similar interface as perforce https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext https://cacm.acm.org/magazines/2016/7/204032-why-google-stor...
- dekhn 7y agohttp://info.perforce.com/rs/perforce/images/GoogleWhitePaper-StillAllonOneServer-PerforceatScale.pdf http://info.perforce.com/rs/perforce/images/GoogleWhitePaper...
- jefftk 7y agoThat's from when Google still ran on Perforce. Around 2012-2013 we moved over to an in-house system that provides a similar interface (see link in sibling comments).
- dekhn 7y agoYes, I know quite well. I was explaining to folks who were wondering how Google got perforce to scale when they used it. I thought using a RAMSAN was very.... creative.
- topher200 7y ago> CL: Stands for “changelist,” which means one self-contained change that has been submitted to version control or which is undergoing code review. Other organizations often call this a “change” or a “patch.” source: https://google.github.io/eng-practices/ https://google.github.io/eng-practices/
- jorblumesea 7y agoYes, I understand, I used it every day. Just very surprised google used perforce, given my bad experiences with it as a whole.
- lazyant 7y agothink "PR"
- kccqzy 7y agoPerforce isn't confusing if you take the time to learn it and understand its model. It even does certain things better than git if you ask me: • You can make a "branch" of portions of a codebase and have it appear side by side with the original. You don't have to keep doing `git checkout` to switch between your version and the original. • Renames and copies are actually remembered and recorded, instead of haphazardly reconstructed after the fact using heuristics. • Have multiple pending CLs. Sort of like having multiple independent WIP commits at the same time. It's quite powerful when you need to do two different things and more convenient than `git add -p` to select hunks.