Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

Suggestions on branching best practices

julian_lelandjulian_leland Member, OS Professional, Mentor Posts: 59 PRO
Hi all,

I'm looking for suggestions on best practices for using branching, as it's the first time I'm really getting familiar with it. Right now, I'm trying to reduce weight in a design: my workflow is to pare back a feature (say, thinning a webbing), save out a SolidWorks file, and run FEA to analyze the impact of modifying that feature on the weight and stiffness of the part. What I'd like to do is:
  • Have a "master part"
  • Have individual versions branched from that master part, each of which represents a different modification (one adds speed holes, one thins webbings, etc.)
  • Eventually, go back to my master part and incorporate some of those features.
What I'm planning to try is to save a version; create branches from that version, and eventually merge those features all together. Does this sound reasonable? Are there hazards I should be aware of?

Comments

  • jakeramsleyjakeramsley Member, Moderator, Onshape Employees, Developers Posts: 657
    Yes, that sounds reasonable.  I use merging/branching in two (or three if you count the collaborative case separate) ways.

    First is to save a version of my base part on the main branch, then create branches for additional features that I want to add to them.  I try to make my branches precise and clean so that when they merge back in there are no issues.  If I am working in a team, then I tend to make a branch for each person and let them work on their parts separately and let them merge it back into the main workspace, so it's not feature based.

    The second is to save a version after making my layout sketch, then branching off that to configurations of my layout sketch that I want.  Then I do all my work on the main workspace and merge it into my different layout branches.  This allows me to get different sizes/shapes of the part I am working on by only doing work in one place.
    Jake Ramsley

    Director of Quality Engineering & Release Manager              onshape.com
  • brucebartlettbrucebartlett Member, OS Professional, Mentor, User Group Leader Posts: 2,137 PRO

    The second is to save a version after making my layout sketch, then branching off that to configurations of my layout sketch that I want.  Then I do all my work on the main workspace and merge it into my different layout branches.  This allows me to get different sizes/shapes of the part I am working on by only doing work in one place.
    @JakeRamsleyhave you got a example made public? Sound like an interesting method.
    Engineer ı Product Designer ı Onshape Consulting Partner
    Twitter: @onshapetricks  & @babart1977   
  • julian_lelandjulian_leland Member, OS Professional, Mentor Posts: 59 PRO
    Thanks, @JakeRamsley. Follow up question:

    If I am working in a team, then I tend to make a branch for each person and let them work on their parts separately and let them merge it back into the main workspace, so it's not feature based.
    Just to clarify - are you saying you have each team member working in their own Part Studio, or everyone in the same studio?
  • jakeramsleyjakeramsley Member, Moderator, Onshape Employees, Developers Posts: 657
    edited February 2015
    Thanks, @JakeRamsley. Follow up question:

    If I am working in a team, then I tend to make a branch for each person and let them work on their parts separately and let them merge it back into the main workspace, so it's not feature based.
    Just to clarify - are you saying you have each team member working in their own Part Studio, or everyone in the same studio?
    I do both, but ideally I put everything in a single part studio that I would want to put into a sub-assembly.  I don't always do it that way, but it allows me to do things in context and create/control multiple parts in a single part studio.  This way different but related parts can have geometry controlled by a single feature, rather than having to go through multiple part studios and make sure to update all of the corresponding features.  Branches allow me to keep everyone in the same part studio, working on related geometry of separate parts concurrently.

    I think which part studios parts reside should be dependent on the design and the design intent, less about the individual or number of individuals involved.

    An example, we had an internal challenge to do a jewelry box that we needed to display in two sets of dimensions.  We designed the boundaries, saved a version, and made a branch for each dimension.  While I updated the boundaries to be correct for each branch, my coworkers made their own branch and started working on their respective part (lid, hinges, little separator in the box, etc.).  When they were done, they merged their work back into our master branch and we did some final touches (including the assembly).  Then we merged these changes back to the dimension branches which had all of our work, our assembly, and the correct sizes post-merge.  In this case we did it all in a single part studio.


    Whether it is separate part studios or not, another huge benefit of having individuals work on separate branches is to keep the change history clean.  If a coworker and I are working in the same workspace at the same time, the change history is a mix of both our work.  If I make a big mistake (happens frequently with me) and I need to restore to a previous point, I've essentially undone the work of my coworker as well.  Using branches keeps the change history separate and allows me to restore just my changes.


    The second is to save a version after making my layout sketch, then branching off that to configurations of my layout sketch that I want.  Then I do all my work on the main workspace and merge it into my different layout branches.  This allows me to get different sizes/shapes of the part I am working on by only doing work in one place.
    @JakeRamsleyhave you got a example made public? Sound like an interesting method.
    I do not, sorry.  By nature of being QA, the majority of my time using Onshape is on development builds.  If you would like, I can potentially spend a couple hours this weekend that'll outline what I have done in the past.
    Jake Ramsley

    Director of Quality Engineering & Release Manager              onshape.com
  • brucebartlettbrucebartlett Member, OS Professional, Mentor, User Group Leader Posts: 2,137 PRO
    @JakeRamsleyNo stress, don't waste your weekend on Onshape like I would, think I sort get what you mean, a pseudo configuration, I have tried a similar method. Are we going to see configurations any-time soon?
    Engineer ı Product Designer ı Onshape Consulting Partner
    Twitter: @onshapetricks  & @babart1977   
  • jakeramsleyjakeramsley Member, Moderator, Onshape Employees, Developers Posts: 657
    Yes, it is like a pseudo configuration.

    I can't give any timeline on when new features like configurations are going in.  
    Jake Ramsley

    Director of Quality Engineering & Release Manager              onshape.com
  • lougallolougallo Member, Moderator, Onshape Employees, Developers Posts: 2,001
    TIP: Just remember that MERGE = PULL.  So if I have MAIN and BRANCH1 and BRANCH1 has a hole I want to merge into MAIN, I would go to MAIN and Merge BRANCH1 into MAIN.  Once that makes sense, you can plan your attack like @JakeRamsley has explained.
    Lou Gallo / PD/UX - Support - Community / Onshape, Inc.
Sign In or Register to comment.