Docs

Change Log

v1.2.1

Bug Fixes

  • #622 - Recover branches left in a transitional status when a background worker dies
  • #650 - Ensure ObjectChange.undo() calls the model's save() method when restoring non-MPTT objects

v1.2.0

NetBox v4.7 Support (#617)

This release adds support for NetBox v4.7, which replaces django-mptt with a PostgreSQL ltree implementation and moves the maintenance of ltree and denormalized fields into database triggers. Branch provisioning now replicates those triggers into each branch schema, so nested object hierarchies behave consistently within a branch.

NetBox v4.7 is now required. Earlier NetBox releases are not supported by this version; continue to use the 1.1.x series with NetBox v4.4 through v4.6.


v1.1.3

Bug Fixes

  • #624 - Ensure conflicts are recorded in ChangeDiff records during object updates

v1.1.2

Enhancements

  • #107 - Introduce the auto_archive_days config parameter to automatically archive branches merged more than n days ago

v1.1.1

Bug Fixes

  • #608 - Generalize squash merge cycle breaking to handle foreign key cycles of any length
  • #610 - Fix handling of MPTT component models during iterative merge

v1.1.0

Faster Branch Provisioning (#595)

The main change for this version is a set of performance enhancements targeting branch provisioning. For large data sets we have seen up to a 4x reduction in the time it takes to provision a branch, so creating a new branch should be significantly faster on larger data sets. Provisioning now copies data across multiple workers in parallel.


v1.0.5

Bug Fixes

  • #496 - Skip the branch deleted-in-main check when the request is absent from context
  • #581 - Close branch connections during the post-migrate pending-migrations check
  • #588 - Preserve unmodified JSON dict keys when merging branches
  • #603 - Remove the unconstrained Django dependency so installers do not upgrade Django past the version NetBox supports

v1.0.4

Enhancements

  • #6 - Group change records by request in the branch view
  • #28 - Preserve sync conflict resolution when merging a branch
  • #545 - Allow plugins to register a resolver for branching support on non-ChangeLoggingMixin models
  • #554 - Improve help text for branch merge
  • #564 - Clarify "no conflicts found" UI to note that constraint violations are detected at merge time
  • #572 - Expose signal to extend SquashMergeStrategy dependency graph
  • #585 - Add help text descriptions to BranchStatusChoices

Bug Fixes

  • #445 - Fix branch edit/save race condition for merge status
  • #483 - Set auto_now=True on the ChangeDiff last_updated field
  • #498 - Fix 500 error from Changes API when a branch with a cable deletion is active
  • #530 - Call super().clean() in Branch.clean() so custom validators run
  • #531 - Fix branch sync failure when no conflicting changes are present
  • #561 - Enforce permissions on the branching sidebar menu
  • #568 - Fix object modified warning for objects in a merged branch

v1.0.3

Enhancements

  • #533 - Avoid instantiating objects when verifying their existence

Bug Fixes

  • #542 - Branch migrations should not generate object change records

v1.0.2

Bug Fixes

  • #539 - Fix branch upgrade migration failures from NetBox 4.4 to 4.6

v1.0.1

Bug Fixes

  • #529 - Allow specifying migrations to skip via fake_on_branch to handle RunPython and AlterModelOptions operations

v1.0.0

Enhancements

  • #419 - Register branch custom permission actions
  • #519 - Disable merge button for branches with no pending changes

Bug Fixes

  • #447 - Fix IntegrityError when creating devices with front/rear port mappings in a branch
  • #493 - Fix event rule handling for NetBox v4.5
  • #494 - Fix merge failure when using S3 storage and a referenced file is not found
  • #522 - Fix share button toast notification, correct typo, and add i18n for activation messages

v0.9.1

Bug Fixes

  • #478 - Fix merge failure when referencing an object that has been deleted in main
  • #513 - Fix AttributeError exception when accessing diff properties on a ChangeDiff with no original or modified data

v0.9.0

Enhancements

  • #145 - Add a detail view for change diffs
  • #213 - Display a warning when a branch is becoming stale
  • #323 - Enable migrating branches in bulk
  • #335 - Add conflict handling to sync & merge API endpoints
  • #406 - Add owner_id filter for branches
  • #425 - Create a merge report
  • #475 - Track objects deleted in main as potential conflicts
  • #485 - Add branch context to events
  • #505 - Support NetBox v4.6

Bug Fixes

  • #423 - Fix migrating branches from v0.5.2
  • #506 - Set SameSite attribute for branch cookie

v0.8.3

Enhancements

  • #25 - Display a summary of changes to be applied under the sync & merge views

Bug Fixes

  • #426 - Allow sync/merge if edited objects have been deleted in main
  • #448 - Fix squash merge ordering when new objects reference other new objects
  • #467 - Fix GFK dependency detection in squash merge
  • #468 - Fix KeyError exception when API request omits commit field

v0.8.2

Enhancements

  • #5 - Automatically redirect to avoid 404s when activating or deactivating a branch
  • #86 - Omit empty values from displayed data for created & deleted objects
  • #307 - Exempt /api/status/ from branching middleware
  • #418 - Allow setting maximum threshold for job timeout

Bug Fixes

  • #422 - Do not display deletion warning if object has already been deleted in main

v0.8.1

Bug Fixes

  • #380 - Fix branch sync failure when object in main branch was updated then deleted
  • #388 - Fix deletion of M2M assignments (tags, interfaces) created within a branch
  • #408 - Ensure ChangeDiff references the most recent changed object

v0.8.0

Enhancements

  • #198 - Add ability to squash changes when merging a branch to resolve conflicts

v0.7.4

Enhancements

  • #386 - Add support for NetBox v4.5

Bug Fixes

  • #384 - Preserve existing DATABASE["OPTIONS"] settings for branch database connections

v0.7.3

Bug Fixes

  • #353 - Prohibit altering branch status via REST API (establishes a dedicated endpoint for archiving)
  • #354 - Ensure that queries for assigned tags utilize the active branch
  • #358 - Enforce CONN_MAX_AGE timeout for branch database connections
  • #365 - Temporarily disable object deletion check when syncing a branch from main to avoid validation failure
  • #371 - Ignore module import errors when discovering object migrators (fixes ModuleNotFoundError exception raised when attempting to merge a branch)

v0.7.2

Enhancements

  • #342 - Display warning when attempting to modify an object that has been deleted in main
  • #347 - Include ObjectChange ID in log messages when applying/undoing changes

Bug Fixes

  • #311 - Fix merge failure when image attachments are created and subsequently deleted
  • #317 - Fix event rules not triggering for branch events
  • #349 - Fix exception when removing a device from a virtual chassis with a branch active

v0.7.1

Bug Fixes

  • #150 - Fix recalculation of cable paths when merging a branch with cable changes

v0.7.0

Enhancements

  • #314 - Include active branch in webhook payload data

Bug Fixes

  • #308 - Prevent branch change records from appearing in main changelog (NetBox v4.4)
  • #309 - Fix ProgrammingError exception when merging branch (NetBox v4.4)

v0.6.2

Bug Fixes

  • #298 - Fix change diff creation for many-to-many fields
  • #321 - Prevent tag object type reassignments from leaking outside a branch
  • #325 - Enforce a maximum NetBox version of 4.3

v0.6.1

Bug Fixes

  • #246 - Ensure changelog is retrieved from the correct database schema
  • #299 - Avoid AttributeError exception when provisioning a branch due to invalid content type

v0.6.0

Enhancements

  • #1 - Enable the application of database migrations to open branches
  • #122 - Implement a mechanism to enforce policy before executing branch actions
  • #181 - Introduce the main_schema configuration parameter to set the default schema name
  • #189 - Introduce a registration mechanism for pre-action branch validators

Bug Fixes

  • #204 - Hide navigation menu items for unauthenticated users

v0.5.7

Bug Fixes

  • #136 - Set GenericForeignKey values when restoring a deleted object
  • #286 - Fix display of branch status in selector dropdown

v0.5.6

Enhancements

  • #262 - Copy migrations table when provisioning a branch

Bug Fixes

  • #256 - Fix "changes ahead" count on branches pending provisioning
  • #260 - Ignore duplicate SQL indexes when provisioning a branch
  • #275 - Set sync_time on branch during initial provisioning

v0.5.5

Bug Fixes

  • #242 - Use RestrictedQuerySet for BranchEvent objects
  • #243 - Defer MPTT recalculation until all changes have been applied
  • #251 - Preserve SQL index names when provisioning a branch

v0.5.4

Bug Fixes

  • #169 - Fix global search caching function when a branch is active
  • #179 - Avoid nullifying object representation when updating a ChangeDiff
  • #222 - Avoid off-screen overflow of long branch names
  • #225 - Branch status field should not be required in REST API serializer
  • #227 - Fix scripts triggered via an event rule when the branching plugin is installed

v0.5.3

Enhancements

  • #209 - Prevent merging branches whose last_sync time exceeds the configured changelog retention window

Bug Fixes

  • #87 - Deactivate the active branch (if any) when creating a new branch
  • #148 - Fix IntegrityError exception raised when executing custom scripts within a branch
  • #178 - Fix display of assigned tags in the branches list

v0.5.2

Bug Fixes

  • #163 - Ensure changelog records for non-branching models are created in main schema

v0.5.1

Enhancements

  • #123 - Introduce template tags for branch action buttons
  • #129 - Implement pre-event signals for branch actions

Bug Fixes

  • #98 - Cable changes in branch should not impact main schema
  • #119 - Fix the dynamic selection of related objects in forms while a branch is active
  • #120 - max_branches config parameter should disregard archived branches
  • #138 - Fix rendering the ID column of the change diffs table
  • #140 - Fix representation of branch status in REST API
  • #142 - Fix tab record counts for archived branches

v0.5.0

Enhancements

  • #83 - Add a "share" button under object views when a branch is active
  • #84 - Introduce the max_working_branches configuration parameter
  • #88 - Add branching support for NetBox's graphQL API
  • #90 - Introduce the ability to archive & deprovision merged branches without deleting them
  • #97 - Introduce the exempt_models config parameter to disable branching support for plugin models
  • #116 - Disable branching support for applicable core models

Bug Fixes

  • #81 - Fix event rule triggering for the branch_reverted event
  • #91 - Disregard the active branch (if any) when alerting on changes under object views
  • #94 - Fix branch merging after modifying an object with custom field data
  • #101 - Permit (but warn about) database queries issued before branching support has been initialized
  • #102 - Record individual object actions in branch job logs

v0.4.0

Enhancements

  • #52 - Introduce the max_branches config parameter
  • #71 - Ensure the consistent application of logging messages
  • #76 - Validate required configuration items on initialization

Bug Fixes

  • #57 - Avoid recording ChangeDiff records for unsupported object types
  • #59 - BranchAwareRouter should consider branching support for model when determining database connection to use
  • #61 - Fix transaction rollback when performing a dry run sync
  • #66 - Capture object representation on ChangeDiff when creating a new object within a branch
  • #69 - Represent null values for ChangeDiff fields consistently in REST API
  • #73 - Ensure all relevant branch diffs are updated when an object is modified in main

v0.3.1

Bug Fixes

  • #42 - Fix exception raised when viewing custom scripts
  • #44 - Handle truncated SQL sequence names to avoid exceptions during branch provisioning
  • #48 - Ensure background job is terminated in the event branch provisioning errors
  • #50 - Branch state should remain as "merged" after dry-run revert

v0.3.0

Enhancements

  • #2 - Enable the ability to revert a previously merged branch
  • #3 - Require review & acknowledgment of conflicts before syncing or merging a branch
  • #4 - Include a three-way diff summary in the REST API representation of a modified object
  • #13 - Add a link to the active branch in the branch selector dropdown
  • #15 - Default to performing a "dry run" for branch sync & merge
  • #17 - Utilize NetBox's JobRunner class for background jobs
  • #29 - Register a branch column on NetBox's global changelog table
  • #36 - Run the branch provisioning process within an isolated transaction

Bug Fixes

  • #10 - Fix branch merge failure when deleted object was modified in another branch
  • #11 - Fix quick search functionality for branch diffs tab
  • #16 - Fix support for many-to-many assignments
  • #24 - Correct the REST API schema for the sync, merge, and revert branch endpoints
  • #30 - Include only unmerged branches with relevant changes in object view notifications
  • #31 - Prevent the deletion of a branch in a transitional state

v0.2.0

  • Initial private release

On this page