Docs

SysModeler — User Manual

12. Version Control (Git)

SysML v2 projects support Git-style version control — commits, diffs, branches, merges, and conflict resolution — without leaving SysModeler.

By default version control is not enabled per project. After enabling it, all files can be tracked similar to a Git.

12.1 Enabling version control

Only the project owner can initialize version control, and only once per project. This provisions a repository behind the scenes and performs an initial commit of all current files. From then on, each file carries a git status:

StatusMeaning
UntrackedNew file, never committed
ModifiedCommitted before, but changed since
CleanMatches the last commit exactly

12.2 Committing changes

Committing saves a snapshot of your current work with a message describing the change, building an audit trail of system modifications:

  1. Start a commit. This takes an exclusive branch lock so your snapshot is consistent. While the lock is held, file edits on that branch are paused for everyone and editing controls are disabled to make this obvious.
  2. Enter a descriptive commit message.
  3. Submit (Ctrl + Enter). History updates and the lock releases.
  4. You can also cancel to release the lock without committing.

Caution — concurrency: If someone else is already committing, starting a commit is rejected and you're told who holds the lock. Abandoned locks expire automatically after a few minutes, so a branch never stays stuck.

12.3 Diff view

Use the side-by-side Diff View to compare two versions or branches before merging — it details added, modified, and deleted code and model structures so you can review changes with confidence.

12.4 Branch management

Branches let you develop in isolation without affecting the main model.

OperationNotes
Create branchFork from an existing branch to test features-architecture safely. Names use letters and hyphens only (max 100 chars).
Rename branchUpdate the branch identifier. Cannot rename main.
Delete branchRemove redundant/merged branches. Cannot delete main, the last remaining branch, or a branch other users are currently on.
Checkout branchSwitch your active branch; open files close and the target branch loads.
Merge branchIntegrate one branch into another (see below).

The branch list updates live for everyone as branches are created, renamed, deleted, or merged.

12.5 Merging & interactive conflict resolution

To integrate one branch into another:

  1. Choose a source and target branch and start a merge.
  2. SysModeler reports one of three outcomes:
    • Success — the merge completed; history updated.
    • Already up to date — nothing to merge.
    • Conflict — the same content changed on both branches and needs your decision.
  3. On conflict, SysModeler lists the affected files with standard Git conflict markers:
    <<<<<<< current
    ...your version...
    =======
    ...incoming version...
    >>>>>>> incoming
    
  4. For each conflicted file: review both sides, edit to the final correct content (removing the markers), and submit your resolutions. All conflicted files must be resolved for the merge to complete.
  5. Once resolved, the merge finishes and the target branch is updated. You can re-merge the two branches afterward as needed.