How to aggregate, view, and compare commits

Hi community,

Can you please guide me to the answers to these questions?

  1. Is there a way to view multiple commits & branches on the web app’s viewer?
  2. Is there a way to compare commits and branches?
  3. I am wondering if it is feasible to have Speckle maintain a latest version of (all/selected) objects from live models in various BIM software on a project. Would it be possible to automate this? This can be kept on the Speckle server or stored in a database (relational or non). I read in the documentation that the storing of data can be programmed using “Transport”. But how efficient would that be as all objects would need to be converted and committed every time, before a comparison occurs on the server side.

I am understanding that Speckle is perhaps designed at the moment for committing objects for interoperability and collaboration at a finite point in time, rather than to aggregate information?

Thanks for the help, I am still trying to understand the different use cases for Speckle for our firm.

Hey Samer,
Thanks for cross posting!

  1. we are currently working on this feature, you will soon be able to view multiple commits, branches or streams in the viewer. Right now it’s not possible
  2. this is also not currently available, but we know it’s a key feature and will definitely add it at some point
  3. so this has been requested before as well. We have a few ideas on how it could be implemented, for instance, we let our connectors send automatically based on various triggers:
  • a schedule (if the model is open, or if the host app can be run headlessly, it could be run at any time)
  • on file save or close
  • when doing a sync to central (in Revit)
  • maybe you have another suggestion?

Hope it helps!


Hey teocomi,

You mentioned that this feature is a priority. Is there any update on if development has started on this feature or an eta on when it will potentially be ready?

Thanks for your help

Hey @high_fiver ,

This has indeed been implemented already - sorry we forgot to post an update here!
You can now overlay Commits and individual Objects:

Would love to hear what you think!



Thanks that looks great! Is there answer to the 3rd point of the original post, maintain a latest version of (all/selected) objects? Overlaying commits is a great start, but if I have an object that I commit to a stream, and later modify it or delete it, I don’t want to see the original configuration.

Hey @high_fiver , I’m not sure I fully understand! Could you please explain what you’re trying to achieve?

A commit is a “snapshot in time” of a specific Stream, therefore the latest commit in a branch is always representing the latest version of all objects.

Lets say I create a commit from this braced frame in Revit.

then I have to change the Revit model. Say I need to reverse the directions of the braces because it interferes with a duct, so now my braced frame looks like this

Now i push the modified braces to the server in a new commit

I would like to see the latest version of all the objects in my stream so I can use the speckle data for structural analysis on my braced frame, but when I overlay the commits, I see the braces in both the old configuration and the new configuration.

I would like it to look like this, which reflects the current state of my revit model.

But I don’t want to push all objects to the server every time, as that seems like an inefficient use of data storage.

Is there any way to view the latest configuration of all the objects that I’ve pushed to a stream, ignoring previous configurations of objects that have been moved or deleted?

1 Like

Ah, you don’t need to do diffs by yourself - speckle takes care of that for you! So basically just send the whole assembly/model again. In the background, speckle will:

  • serialise and hash your objects
  • check if the beams are the same, in which case yes
  • send only the new braces and compose a new object tree with your new braces and “old beams”
  • persist that as a new commit on the server

In short - we do the diffing for you, so you don’t need to worry about this!


Oh wow that’s so simple, thanks so much!