Fix diff view for files in change edit If a change edit is viewed in the change screen and the change screen is not in edit mode, then clicking on any file in the file list results in a not found screen. This is because the client makes requests to the server where 'edit' is used as revision and the server cannot resolve this revision. Other edit-related requests use '0' as revision for change edits and those succeed. Fix this by supporting 'edit' as revision for change edits. Also document '0' and 'edit' as possible values for revision-id. Change-Id: If93894b330e0c7942a94a532eca84a73a84b06f5 Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt index 63eccfb..45d2327 100644 --- a/Documentation/rest-api-changes.txt +++ b/Documentation/rest-api-changes.txt
@@ -4237,6 +4237,7 @@ * an abbreviated commit ID that uniquely identifies one revision of the change ("674ac754"), at least 4 digits are required * a legacy numeric patch number ("1" for first patch set of the change) +* "0" or the literal `edit` for a change edit [[json-entities]] == JSON Entities
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java index affef17..c611f2c 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/edit/ChangeEditIT.java
@@ -148,6 +148,17 @@ } @Test + public void parseEditRevision() throws Exception { + assertThat(modifier.createEdit(change, ps)).isEqualTo(RefUpdate.Result.NEW); + + // check that '0' is parsed as edit revision + gApi.changes().id(change.getChangeId()).revision(0).comments(); + + // check that 'edit' is parsed as edit revision + gApi.changes().id(change.getChangeId()).revision("edit").comments(); + } + + @Test public void deleteEdit() throws Exception { assertThat(modifier.createEdit(change, ps)).isEqualTo(RefUpdate.Result.NEW); assertThat(
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revisions.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revisions.java index a390505..30a09cf 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revisions.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revisions.java
@@ -104,7 +104,7 @@ private List<RevisionResource> find(ChangeResource change, String id) throws OrmException, IOException, AuthException { - if (id.equals("0")) { + if (id.equals("0") || id.equals("edit")) { return loadEdit(change, null); } else if (id.length() < 6 && id.matches("^[1-9][0-9]{0,4}$")) { // Legacy patch set number syntax.