You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

under construction!!!

Introduction

JS7 JOC should be able to connect to GIT repositories to store JS7 configuration objects. Configuration objects can be versionized (tagged) and rolled out to different JS7 instances via GIT.

The usage of GIT somewhat conrtradicts the usage of a database as the leading system to store configuration data.

JS7 is the leading system to store configuration data. A connection to a GIT repository can only be seen as an additional oportunity to versionize and to rollout JS7 configuration objects.

Configuration Objects

Configuration objects to be stored in a GIT repository:

  • Workflows
  • Locks
  • File Order Sources
  • Job Resources
  • Boards
  • Calendars
  • Schedules

GIT Repository Usage

The JOC web services execute a set of GIT commands with the implementation of JGit.

Storage

JS7 configuration objects are stored to a GIT repository via JOC web services.

Commands / Services

  • git-add
    • Adds (new) configuration object(s) from a working copy (currently the DB) to a local repository.
  • git-delete
    • Removes an already added configuration object from the local repository.
  • git-commit
    • Commits newly added, changed or removed configuration objects to a local repository.
  • git-push
    • Pushes the changes from the local repository to the connected remote repository.

Versioning

Versioning of JS7 configuration objects will be done with the tagging functionality of GIT. 

The JOC web services can manage the GIT tagging process.

Commands / Services

  • git-tag
    • tags the current commit with a version label
  • git-push
    • see above

Rollout

Rollout between different JS7 instances can be performed with the GIT functionality.

The JOC web services manage the checkout- and clone processes.

Commands / Services

  • git-checkout
    • checks out a specific branch or tag from the repository.
  • git-clone
    • clones a repository locally for the first time.
  • git-pull
    • pulls the recent changes from the remote repository into the local repository

Force Overwrite

Overwrites forcefully a connfguration with the chosen source configuration between a GIT repository and a JS7 instance.

  • JOC will not support 3rd party diff tools nor will a diff tool be implemented into JOC.
  • For managing JS7 configuration objects merging means to provide a possibility to choose which state of the configuration object is the chosen one to use and in which direction it is to be populated. Effectively the chosen source configuration will forcefully overwrite the target configuration.
  • JOC does not support merging between different GIT repositories or between different branches of one GIT repository as this is standard GIT functionality and can be done with any git tools outside of JOC.

The JOC web services manage the merge process.

A force direction has to be provided.

Commands / Services

  • JS7 instance → GIT repository
    • git-add
      • Adds (new) configuration object(s) from a working copy (currently the DB) to a local repository.
    • git-delete
      • Removes an already added configuration object from the local repository.
    • git-commit
      • Commits newly added, changed or removed configuration objects to a local repository.
    • git-push
      • Pushes the changes from the local repository to the connected remote repository.
  • GIT repository → JS7 instance
    • git-checkout
      • checks out a specific branch or tag from the repository.
    • git-clone
      • clones a repository locally for the first time.
    • git-pull
      • pulls the recent changes from the remote repository into the local repository


Use Cases

Single User (Backup and Versioning Tool)

GIT repository usage:

  • storage
  • versioning
  • rollout

Requirements

TODO

dev, test, prod - single user

GIT repository usage:

  • storage
  • versioning
  • rollout
  • merge

Requirements

  • TODO
  • different versioning for different branches (dev, test, prod)
  • DB is the leading system (???) (single DB? for each branch?)
  • repository used for user versioning only
  • merges from branch to branch possible?
  • version can overwrite local (DB) versions as new configurations
  • new local configuration share latest version from DB (next version +1 or next version Snapshot)

dev, test, prod - multi user

GIT repository usage:

  • storage
  • versioning
  • rollout
  • merge

Requirements

  • TODO
  • different versioning for different branches (dev, test, prod)

  • different users each branch can commit (Merge needed! 3rd party Tool like KDiff?)

  • DB is the leading system (???) (Single DB (dev, test, prod) needed for each branch (Security/Network issues))

  • repository used for user versioning only

  • merges from branch to branch possible

  • version can overwrite local (DB) versions as new configurations

  • new local configurstion share latest version from DB (next version +1 or next version Snapshot)

  • No labels