Trac Decentral Branching

(draft)

This plan implements functionality into Trac / SVN, which allows developers to participate on code-level with a project, without having access to the main repository.

Development happens on an own branch, which is made publicly available , thus other developers can:

  • check-out this branch an verify the changes.
  • view the work on the dedicated project-environment (e.g. trac)

The change-log contains only changes made by this developer (or group of developers).

The repository can be synched with the central repository by standard svn-merge operations.

Any committer of the central repository can merge the decentral-branch (or portions of it) to the central repository.

Goals

  • Enable collaborative work on a branch location without commit access to the main repository

Requirements

Implementational

  • Simplicity, Integrity
  • Use original svn, avoid additional tools

Functional

  • create (copy original repo to the branch-server location)
  • commit (high amounts of incremental development steps)
  • synchronize (branch is synchronized with original repo)
  • mergeback (branch is merged back to original repo)

Description

  • create a branch from the central repository
    • checkout-revision should be captured somewhere (COR)
    • last-update-revision (LUR) set to COR
  • synchronize the branch to the central repository
    • merge changes from LUR:HEAD to the branch-repo
    • set LUR to HEAD
  • mergeback changes back into central repository

Trac

currently, a copy of the central branch must be kept in order to be able to produce difference reports:

http://dev.lazaridis.com/base/intertrac/diff:sync/trac@115:infra/trac-dev@115

Ideally, trac should be able to display a diff report on an external repository:

http://dev.lazaridis.com/base/intertrac/diff:ext/trac@4231:infra/trac-dev@115