Remove "no changes made" error case

This is the error that occurs during push when the only difference
between a new commit and the previous patch set of the change is the
committer. This can happen sometimes after a series of rebases that
don't behave exactly as the user expected. Typically, the user doesn't
know how they got into this state, and they don't know how to get out
of it. (Getting out of it requires splicing in the old commit SHA-1--
or maybe many old commit SHA-1s--in the interactive rebase editor,
which requires more familiarity with interactive rebasing than we
usually expect even from Gerrit users.)

The benefits of keeping this error message are:
 a. It prevents extraneous patch sets.
 b. It avoids the original committer on the change from having to
    fetch and rebase.
 c. It doesn't step on approvals of previous patch sets.

I would argue that the cognitive burden of creating a few extra patch
sets here and there is far outweighed by the minutes or hours of
confusion caused when a user actually puts themselves in this state.
This includes the burden both on the committer doing th push of an
identical patch set, and the original committer of the previous patch
set as in (b).

In many cases the committer identity doesn't change, only the
committer timestamp, in which case the user already has the new copy
of their commit. In the case where it differs, this is really no
different from any other time two committers collaborate on the same
change. Plus, when a user encounters this error, there is a good
chance they will try to recover by pushing a new patch set with a
whitespace change or something, in which case they end up with two
extraneous patch sets and the original committer still has to fetch
and rebase.

Regarding (c), this benefit carried more weight before we implemented
approval copying. Now, with the default configuration of copying
Code-Review on trivial rebase and Verified on no code change, the
extraneous patch sets should have most of their approvals copied, so
they don't interrupt the workflow as much.

Finally, note that there is no security/permissions argument for
keeping this error due to one committer "taking over" commitership of
the change commit from someone else. Any user with Forge Committer
permission can already create a patch set that is identical to a
previous patch set owned by someone else, simply by pushing a
non-identical patch set in between.

In conclusion, the "no changes made" error is no longer worth the
confusion caused, so convert the error into an informational warning
as in other cases.

Bug: Issue 1867
Change-Id: I7ecdd1ae29a7b920288639d034c21fc1ce0edb99
3 files changed
tree: a9909674c7402504f57a207abd13ed1225965534
  1. .settings/
  2. bucklets/
  3. contrib/
  4. Documentation/
  5. gerrit-acceptance-framework/
  6. gerrit-acceptance-tests/
  7. gerrit-antlr/
  8. gerrit-cache-h2/
  9. gerrit-common/
  10. gerrit-extension-api/
  11. gerrit-gpg/
  12. gerrit-gwtdebug/
  13. gerrit-gwtexpui/
  14. gerrit-gwtui/
  15. gerrit-gwtui-common/
  16. gerrit-httpd/
  17. gerrit-launcher/
  18. gerrit-lucene/
  19. gerrit-main/
  20. gerrit-oauth/
  21. gerrit-openid/
  22. gerrit-patch-commonsnet/
  23. gerrit-patch-jgit/
  24. gerrit-pgm/
  25. gerrit-plugin-api/
  26. gerrit-plugin-archetype/
  27. gerrit-plugin-gwt-archetype/
  28. gerrit-plugin-gwtui/
  29. gerrit-plugin-js-archetype/
  30. gerrit-prettify/
  31. gerrit-reviewdb/
  32. gerrit-server/
  33. gerrit-sshd/
  34. gerrit-util-cli/
  35. gerrit-util-http/
  36. gerrit-util-ssl/
  37. gerrit-war/
  38. lib/
  39. plugins/
  40. polygerrit-ui/
  41. ReleaseNotes/
  42. tools/
  43. website/
  44. .buckconfig
  45. .buckversion
  46. .editorconfig
  47. .gitignore
  48. .gitmodules
  49. .mailmap
  50. .pydevproject
  51. .watchmanconfig
  52. BUCK
  53. COPYING
  54. INSTALL
  55. README.md
  56. SUBMITTING_PATCHES
  57. VERSION
README.md

Gerrit Code Review

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

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 Buck and run the following:

    git clone --recursive https://gerrit.googlesource.com/gerrit
    cd gerrit && buck 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>]

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

Events

  • March 14-18 2016: Gerrit Hackathon, Berlin (free seats are still available).