summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--emacs/elisp/my-git-extra.el42
1 files changed, 25 insertions, 17 deletions
diff --git a/emacs/elisp/my-git-extra.el b/emacs/elisp/my-git-extra.el
index 0b6420b..30fff78 100644
--- a/emacs/elisp/my-git-extra.el
+++ b/emacs/elisp/my-git-extra.el
@@ -12,31 +12,39 @@
          (target-dir (concat  "~/workspace/" repo-name)))
     (magit-clone-regular url target-dir nil)))
 
-(defun my/get-sg-remote-from-hostname (hostname)
-  "Create a sourcegraph URL from HOSTNAME."
-  (format "sourcegraph.rbx.com/%s" hostname))
+(defun my/sg-instance (hostname)
+  "Return the base URL for a sourcegraph instance based on HOSTNAME."
+  (cond ((string-match "cl\.fcuny\.net" hostname) (format "cs.fcuny.xyz/%s" hostname))
+        (t (format "sourcegraph.rbx.com/%s" hostname))))
 
-(defun my/git-link-work-sourcegraph (hostname dirname filename _branch commit start end)
+(defun my/git-link-sourcegraph (hostname dirname filename _branch commit start end)
   "Create a link to sourcegraph given a HOSTNAME DIRNAME FILENAME _BRANCH COMMIT START and END."
-  ;; Use the default branch of the repository instead of the
-  ;; current one (we might be on a feature branch that is not
-  ;; available on the remote).
-  (let ((sg-base-url (my/get-sg-remote-from-hostname hostname))
-        (main-branch (magit-main-branch)))
+  (let ((sg-base-url (my/sg-instance hostname))
+        ;; Use the default branch of the repository instead of the
+        ;; current one (we might be on a feature branch that is not
+        ;; available on the remote).
+        (main-branch (magit-main-branch))
+        ;; repositories cloned with gerrit have a "a/" prefix which we
+        ;; need to remove, as it's not part of the repository name in
+        ;; sourcegraph.
+        (dirname (replace-regexp-in-string "a\/" "" dirname)))
     (git-link-sourcegraph sg-base-url dirname filename main-branch commit start end)))
 
-(defun my/git-link-commit-work-sourcegraph (hostname dirname commit)
+(defun my/git-link-commit-sourcegraph (hostname dirname commit)
   "Create the link to sourcegraph given a HOSTNAME DIRNAME and COMMIT."
-  (let ((sg-base-url (my/get-sg-remote-from-hostname hostname)))
+  (let ((sg-base-url (my/sg-instance hostname))
+        (dirname (replace-regexp-in-string "a\/" "" dirname)))
     (git-link-commit-sourcegraph sg-base-url dirname commit)))
 
 ;; for work related repositories, open them in our instance of sourcegraph
-(add-to-list 'git-link-remote-alist '("github\\.rbx\\.com" my/git-link-work-sourcegraph))
-(add-to-list 'git-link-commit-remote-alist '("github\\.rbx\\.com" my/git-link-commit-work-sourcegraph))
-
-;; for personal code I use gitea, which is similar to codeberg
-(add-to-list 'git-link-remote-alist '("git\\.my\\.net" git-link-codeberg))
-(add-to-list 'git-link-commit-remote-alist '("git\\.my\\.net" git-link-commit-codeberg))
+(add-to-list 'git-link-remote-alist '("github\\.rbx\\.com" my/git-link-sourcegraph))
+(add-to-list 'git-link-commit-remote-alist '("github\\.rbx\\.com" my/git-link-work-sourcegraph))
+
+;; for personal code I use cgit and gerrit
+(add-to-list 'git-link-remote-alist '("git\\.fcuny\\.net" my/git-link-sourcegraph))
+(add-to-list 'git-link-remote-alist '("cl\\.fcuny\\.net" my/git-link-sourcegraph))
+(add-to-list 'git-link-commit-remote-alist '("git\\.fcuny\\.net" my/git-link-commit-sourcegraph))
+(add-to-list 'git-link-commit-remote-alist '("cl\\.fcuny\\.net" my/git-link-commit-sourcegraph))
 
 (provide 'my-git-extra)
 ;;; my-git-extra.el ends here