From 7e401fb026db85205f19f008e9dbb24ab05f20db Mon Sep 17 00:00:00 2001
From: Clark Boylan <clark.boylan@gmail.com>
Date: Thu, 2 Jul 2020 07:55:42 -0700
Subject: [PATCH] Fix repo API listing stability (#12057)

Repo listings are paginated in the API now. Unfortunately, they are
ORDER BY updated_unix which only has second resolution. This means that
if you do a listing when multiple projects were created at the same time
you can unstable ordering. If that unstable ordering happens at a page
boundary you may fail to get a complete repo listing.

To make things worse sorting by updated_unix means that we may never get
a complete listing because udpated_unix can change independent of our
API calls.

Fix this by making the API repo listing order by id instead.
---
 routers/api/v1/user/repo.go | 1 +
 1 file changed, 1 insertion(+)

diff --git a/routers/api/v1/user/repo.go b/routers/api/v1/user/repo.go
index 519a999a98..dbd18f133d 100644
--- a/routers/api/v1/user/repo.go
+++ b/routers/api/v1/user/repo.go
@@ -22,6 +22,7 @@ func listUserRepos(ctx *context.APIContext, u *models.User, private bool) {
 		Actor:       u,
 		Private:     private,
 		ListOptions: opts,
+		OrderBy:     "id ASC",
 	})
 	if err != nil {
 		ctx.Error(http.StatusInternalServerError, "GetUserRepositories", err)