Overview

Git Synchronization

Overview

For every project in the application, Prophecy creates a Gitea repository where all the versioned aspects are stored. Users can use the git synchronization feature to export this git content to other git services. Synchronization comes in two flavours: to an empty repository or to a non-empty repository’s sub-directory.

Synchronization Setup

To an empty repository

  • Create an empty repository to sync the Prophecy project and generate a personal access token.
  • Go to the project page and click the External Git Config button.
  • Provide the repository url, username and the personal access token. Leave the Git Folder Path field empty.
  • Click the Link button.

To a non-empty repository’s subdirectory

  • In addition to the above, fill in the Git Folder Path with appropriate directory path. If the provided directory already exists, it will be overwritten.
  • Note: The provided repository must have master branch in this case (this requirement will be removed in subsequent release).

Synchronization Starts

Once the synchronization starts, all the (existing and any new) commits will appear in the repository.

Sychronization Status and Stopping

Synchronization status can be checked by clicking the External Git Config. Any error during synchronization, say the expiry of access token, will be visible here. It also shows option to stop synchronization.

Branch Management

  • A typical project repository has three types of branches: master, development/<username> and release/<fabric_name>.
  • Only these branches are synchronized.
  • Users must not make commits from outside Prophecy application to development/release branches of either internal or external repository.
  • Branch wise synchronization details:
    • Upstream sync: commits in internal repository are pushed to external
    • Both ways sync: commits in internal repository are pushed to external and vice-versa
Internal Branch Name Corresponding External Branch Name Sync type
master master Both ways
development/<username> <team_name>/<project_name>/development/<username> Upstream
release/<fabric_name> <team_name>/<project_name>/release/<fabric_name> Upstream