feat(on_push_hook): make use of new data.payload exposed by fastify-git-server v1.6.0
+ 31
- 12
app/controllers/repository/getRepositoryBrowserView.ts
@@ -20,7 +20,7 @@ const getRepositoryBrowserView: ReqHandler = async (request, reply) => {
   const params =
     request.params as AppRoutesParams[AppRoute.REPOSITORY_BROWSER]["params"];
   const { orgSlug, repoSlug, ref } = params;
-  const path = params["*"];
+  const path = params["*"] || "/";
 
   const orgService = makeOrganizationService({ request });
   const repoService = makeRepositoryService({ request });

@@ -455,6 +455,13 @@ const RootAppRouter: AppRouter = () => {
           schema={AppRoutesSchemas[AppRoute.REPOSITORY_DETAILS]}
           handler={RepositoryController.getRepositoryDetailsView}
         />
+        <Router.Route
+          name={AppRoute.REPOSITORY_BROWSER}
+          method={"GET"}
+          path={"/:orgSlug/:repoSlug/:ref/tree"}
+          schema={AppRoutesSchemas[AppRoute.REPOSITORY_BROWSER]}
+          handler={RepositoryController.getRepositoryBrowserView}
+        />
         <Router.Route
           name={AppRoute.REPOSITORY_BROWSER}
           method={"GET"}

app/services/gitServer/onPushEvent.ts
@@ -4,15 +4,21 @@ import { GitServer } from "@ethicdevs/fastify-git-server";
 // app
 import { Env } from "../../env";
 import { GitServerServiceDeps } from "./types";
+import { getEnv } from "../../utils/server";
 
 const makeOnPushEvent: ServiceMethodFactory<
   GitServerServiceDeps,
   [GitServer.Event],
   void
 > = ({ request }) => {
+  const env = getEnv();
   return ({ data, message }) => {
     message.write("\n");
     if (data.packType === GitServer.PackType.RECEIVE) {
+      // client has done something like "git push"
+      // it is uploading, we are receiving
+      console.log("receive-pack");
+
       const [orgSlug, repoSlug] = data.repoSlug.split("/");
       request.prisma.repository
         .findFirst({

...
@@ -36,13 +42,19 @@ const makeOnPushEvent: ServiceMethodFactory<
           return updatedRepo;
         });
 
-      // client has done something like "git push"
-      // it is uploading, we are receiving
-      console.log("receive-pack");
-      message.write("🖖 See the details of your push at:\n");
-      message.write(
-        `🧲 ${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}/${orgSlug}/${repoSlug}\n`
-      );
+      const baseUrl =
+        env === "development"
+          ? `${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}:${Env.PORT}/${orgSlug}/${repoSlug}`
+          : `${Env.DEPLOYMENT_SCHEME}://${Env.DEPLOYMENT_DOMAIN}/${orgSlug}/${repoSlug}`;
+
+      if (data.payload != null) {
+        message.write("🖖 See the details of your push at:\n");
+        if (data.payload.refType === "head") {
+          message.write(`🧲 ${baseUrl}/${data.payload.refName}/tree/\n`);
+        } else if (data.payload.refType === "tag") {
+          message.write(`➡️ ${baseUrl}/tags/${data.payload.refName}\n`);
+        }
+      }
     } else if (data.packType === GitServer.PackType.UPLOAD) {
       // client has done something like "git clone"
       // it is receiving, we are uploading

@@ -27,7 +27,7 @@
   },
   "dependencies": {
     "@ethicdevs/fastify-custom-session": "^0.6.0",
-    "@ethicdevs/fastify-git-server": "^1.5.0",
+    "@ethicdevs/fastify-git-server": "^1.6.0",
     "@ethicdevs/fastify-stream-react-views": "^1.9.9",
     "@ethicdevs/react-monolith": "^1.6.1",
     "@fastify/cookie": "6.0.0",

@@ -303,9 +303,9 @@
     pg "^8.7.3"
     pg-pool "^3.5.1"
 
-"@ethicdevs/fastify-git-server@^1.5.0":
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/@ethicdevs/fastify-git-server/-/fastify-git-server-1.5.0.tgz#9429d01c96e4d06ec0f3579dcdc62ec646bbef72"
+"@ethicdevs/fastify-git-server@^1.6.0":
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/@ethicdevs/fastify-git-server/-/fastify-git-server-1.6.0.tgz#07c9b375796420eeb12332e7388714dbfc4a5132"
   dependencies:
     debug "^4.3.4"
     fastify-plugin "^3.0.1"