"Fork" a Speckle project

Not quite sure whether this should be in Help or Features & Ideas.

Objective: Copy (fork) a Speckle project with all it’s models (branches) and model versions (commit history).

Right now I’d like to do this with my Kai Tak project:
https://app.speckle.systems/projects/013aaf06e7/models/0fa0287ba8,1cbe68ed69,44c8d1ecae,7f9d99cae2,9535541c2b,a739490298,ff81bfa02b

I’d say this would also be handy e.g. for people who want to experiment with Speckle and have a certain project as a starting point or for companies that want to create a Speckle project template.

Good suggestion! Would you like this to be a user facing feature or are you looking for a way to do so programmaticlly?

If programmatically, I think @jonathon might have some scripts to share, otherwise you could dig and see how we do it when a new account is created, I believe the sample model is essentially “forked” for every new user (@gergo might correct me if fake news :wink: )

1 Like

I think it would be nice if this were a user facing feature, but for myself and for now I’d be happy with a programmatic way of doing it.

In case someone has a script laying around, great! Otherwise I’ll dig into the code of speckle-server.
(that’s where this would be, right? Given that new accounts are created in the web app.)

If it is all versions of all models there is a very straightforward way to do this, but it wont preserve ids between source and target

Psuedo code makes it look very easy

with source_project

for models in source_project

    all_versions = model.versions.reverse()
    
    for all_versions in model 

        data = receive ( source_project, version )

        send ( target_project, model, data)
1 Like

Awesome, will give this a spin once I get round to it and put the non-pseudo code back in here :smiling_hearts_spockle:

i would do more, but … SpeckleCon

1 Like

Yeah, no worries ofc.
Your help has already been very helpful, and this way I actually learn more :slight_smile: