This section describes the basics of the AccuRev GitCentric integration.
Planning your installation
AccuRev GitCentric (formerly known as Kando) provides the flexibility of Git and the security of AccuRev. GitCentric reflects the flexibility of both the Git and AccuRev environments, and it is possible to configure your repositories and streams in countless ways. However, keep the following items in mind:
- Git repositories are smaller, coherent groups of functionality. You do not merge files, you merge the whole repository.
- AccuRev depots tend to be large sets of files related to entire products, or multiple products.
Therefore, you probably do not want to create a repository that maps to an entire depot. You want your Git branches to map to directories within AccuRev streams that contain smaller, independent sections of functionality.
As with any new tool, it is important that you first understand what your current process is. If you are an existing Git shop, make sure that you have a clear picture of how your repositories and branches are configured, and your workflow. In evaluating this, you may find that you need to better define your current environment. If you have never gone through this exercise, consider searching for the following terms on the web: git, workflow, and model. This will point you to some good discussions about successful Git implementations. Once this is done, then you will be in a better position to decide how to map your branches to AccuRev streams.
Also, note that both Git and AccuRev bring different strengths to your organization. Git provides a convenient, distributed version control system to your development end users. AccuRev provides powerful, centralized version control for users such as build administrators, release engineers, product managers, etc. Git branches can be somewhat transient -- if you start to develop something on a branch and then change your mind, you can delete the branch. AccuRev is TimeSafe, meaning, all versions and transactions are captured permanently in the AccuRev database. When carefully planned, mapping between these environments means that GitCentric provides the best of both worlds to your organization.
Because GitCentric spans the environments of AccuRev, Git, and Gerrit Code Review, you may encounter some conflicts or overlaps in terminology. For example, Gerrit Code Review often uses the term project to refer to a repository. AccuRev uses the terms repository or repo when referring to a repository, and reserves the term project for referring to specific Gerrit Code Review functionality, or when referring to a type of planned or defined undertaking.
See the Glossary for an explanation of the terms used in GitCentric.
The following diagram shows the basic configuration of a very simple GitCentric environment where the Git repository, Tomcat web server, and AccuRev Server with databases for both GitCentric and AccuRev reside on the same server:
In this simple configuration, the GitCentric server hosts:
- A Tomcat web server configured with two GitCentric apps (a bridge and an administrative GUI).
- An AccuRev Server which includes a PostgreSQL database, and which functions as both the GitCentric AccuRev Server and a production SCM AccuRev Server with a trigger (server_master_trigger) to notify GitCentric of changes in AccuRev.
- A GitCentric installation directory, which generally (but not necessarily) contains a storage area for one more Git repositories which include triggers (pre-receive and update) and configuration files. (The triggers are Git hooks that get copied to your GitCentric repos and which help keep AccuRev synchronized with your repo. Search the web for more information about Git hooks.)
In this simple environment, the AccuRev Server hosts both the AccuRev depot containing the streams that are mapped to branches in the Git repo, along with the database server for both GitCentric and AccuRev, and another trigger that keeps your repo synchronized with AccuRev. In fact the Tomcat web server is also a part of the AccuRev installation, under the <ac_home>/WebUI directory.
For the sake of this discussion, we will assume the simple configuration in which the Git repo and the AccuRev Server (which includes the Tomcat web server, the GitCentric database, and the production SCM database) all reside on the same machine.
Regardless of the complexity of the installation, the basic GitCentric process remains the same: Git users push and pull files between their local Git repos and the GitCentric Git repo. AccuRev users promote and update files between their workspaces and the AccuRev Server. And GitCentric keeps the branches in the Git repos synchronized with streams in the AccuRev Servers.
This section describes how to configure multiple repositories and multiple servers.
The diagram in Basic architecture illustrates a a single Git repository being associated with a single AccuRev Server through GitCentric. The diagrams in Mapping branches illustrate multiple repositories being mapped to a single AccuRev server.
However, GitCentric can also configure multiple Git repositories with multiple AccuRev Servers. For example, you could have one repository associated with one AccuRev Server, and two others associated with a different AccuRev Server. (A single repository cannot be associated with multiple AccuRev Servers, nor can multiple GitCentric servers be configured with the same AccuRev Server.)
If you choose to configure multiple AccuRev Servers, we recommend that you use the same GitCentric administrator user and password for all AccuRev Servers to avoid the need to constantly log in and out as you move between servers.
Where to go for more information
When using GitCentric, the documentation you need depends on what component you are using:
- For AccuRev documentation, access the complete documentation set in HTML and PDF from the Help Contents & Manuals menu in the AccuRev GUI.
- For GitCentric installation, see GitCentric installation.
- For GitCentric administration, see Administrator tasks.
AccuRev Release Notes are available from the Product Documentation page here:
- For help with Gerrit Code Review, see the Gerrit Code Review documentation.
- For Git documentation, use git help from the command line. Browse the Internet for a search engine to locate tutorials and discussions regarding Git.