PG: Make commitlink selection configurable and consistent

Previously the selection of which Weblink that should be used for
inline commitlinks (like patchset, parent) was determined by a number
of assumptions:
(Known weblinks that links to codebrowsers are Gitweb and Gitiles)

* It was assumed that the name of the weblink to gitiles would be
  'gitiles'.

  The default name has since changed to 'browse', however many
  installations have configured the name to be the old default
  'gitiles and therefore we keep this name as an identifier of a
  weblink that links to a codebrowser.

* It was assumed that there would never be more than one weblink
  available to any of these code-browsers. If weblinks for both
  Gitiles and Gitweb was available PG would always select Gitweb
  for inline commitlinks.

  Use ServerInfo.gerrit.primaryWeblinkName setting to select
  codebrowser weblink for inline commit links.

  If primaryWeblinkName is not set try to find a codebrowser weblink
  by searching for known codebrowser weblinks in the order
  (Gitiles first):

    1. weblink.name == 'gitiles' - Old default Gitiles name
    2. weblink.name == 'browse'  - Current default Gitiles name
    3. weblink.name == 'gitweb'

* None of the known codebrowser weblinks were visible in
  changeMetadata.links. Since it was assumed that there would never
  be more than one weblink available that linked to a codebrowser,
  all known weblinks linking to codebrowsers were excluded from this
  collection, even if they were not selected for inline commitlinks.

  Since selection of the weblink that is used for inline commitlinks
  is now well defined we can safely remove exactly that one from
  the available weblinks when populating changeMetadata.links which
  will enable for having weblinks to both Gitweb and Gitiles (when
  named 'gitiles') being displayed on the Changescreen. The primary
  as inline commitlinks and all other in changeMetadata.links.

Bug: Issue 10355
Change-Id: If3aaa629d06ff77f1faff0dff15f68fe1adad469
5 files changed
tree: b7b57e2b9626f89173ea794a516fb9920288d165
  1. .settings/
  2. antlr3/
  3. contrib/
  4. Documentation/
  5. gerrit-gwtdebug/
  6. gerrit-gwtui/
  7. gerrit-gwtui-common/
  8. gerrit-plugin-gwtui/
  9. java/
  10. javatests/
  11. lib/
  12. plugins/
  13. polygerrit-ui/
  14. prolog/
  15. prologtests/
  16. proto/
  17. resources/
  18. tools/
  19. webapp/
  20. .bazelproject
  21. .bazelrc
  22. .editorconfig
  23. .git-blame-ignore-revs
  24. .gitignore
  25. .gitmodules
  26. .mailmap
  27. .pydevproject
  28. BUILD
  29. COPYING
  30. INSTALL
  31. README.md
  32. SUBMITTING_PATCHES
  33. version.bzl
  34. WORKSPACE
README.md

Gerrit Code Review

Gerrit is a code review and project management tool for Git based projects.

Build Status

Objective

Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.

Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer.

Documentation

For information about how to install and use Gerrit, refer to the documentation.

Source

Our canonical Git repository is located on googlesource.com. There is a mirror of the repository on Github.

Reporting bugs

Please report bugs on the issue tracker.

Contribute

Gerrit is the work of hundreds of contributors. We appreciate your help!

Please read the contribution guidelines.

Note that we do not accept Pull Requests via the Github mirror.

Getting in contact

The IRC channel on freenode is #gerrit. An archive is available at: echelog.com.

The Developer Mailing list is repo-discuss on Google Groups.

License

Gerrit is provided under the Apache License 2.0.

Build

Install Bazel and run the following:

    git clone --recurse-submodules https://gerrit.googlesource.com/gerrit
    cd gerrit && bazel build release

Install binary packages (Deb/Rpm)

The instruction how to configure GerritForge/BinTray repositories is here

On Debian/Ubuntu run:

    apt-get update & apt-get install gerrit=<version>-<release>

NOTE: release is a counter that starts with 1 and indicates the number of packages that have been released with the same version of the software.

On CentOS/RedHat run:

    yum clean all && yum install gerrit-<version>[-<release>]

On Fedora run:

    dnf clean all && dnf install gerrit-<version>[-<release>]

Use pre-built Gerrit images on Docker

Docker images of Gerrit are available on DockerHub

To run a CentOS 7 based Gerrit image:

    docker run -p 8080:8080 gerritforge/gerrit-centos7[:version]

To run a Ubuntu 15.04 based Gerrit image:

    docker run -p 8080:8080 gerritforge/gerrit-ubuntu15.04[:version]

NOTE: release is optional. Last released package of the version is installed if the release number is omitted.